I have a folder with 10 matfiles where the first row is the time and the second raw is some data associated with the time. I want to convert all the time for the first row of each of the matfiles as a new time series using datenum. I have been able to navigate to the directory of and tried this code but it isnt working. Please is can I get some help.
mat = dir('*.mat');
for i = 1:length(mat)
load(mat(i).name);
newMat = mat(i).name(1,:);
newdate = datenum(newMat);
end

1 comentario

Guillaume
Guillaume el 25 de Mzo. de 2019
Why not use datetime instead of datenum? It's more flexible and more reliable.

Iniciar sesión para comentar.

 Respuesta aceptada

Stephen23
Stephen23 el 25 de Mzo. de 2019
Editada: Stephen23 el 25 de Mzo. de 2019

1 voto

It is not required to navigate to data directories to read data:
D = 'Path of the directory where the MAT files are saved';
S = dir(fullfile(D,'*.mat'));
for k = 1:numel(mat)
T = load(fullfile(D,S(k).name));
M = T.nameOfTheVariableInMatFileWhichYouHaveNotToldUs;
newdate = datenum(M(1,:));
end
Or, assuming that the .mat files contain only one variable:
D = 'Path of the directory where the MAT files are saved';
S = dir(fullfile(D,'*.mat'));
for k = 1:numel(mat)
T = load(fullfile(D,S(k).name));
C = struct2cell(T);
newdate = datenum(C{1}(1,:));
end

Más respuestas (0)

Categorías

Etiquetas

Preguntada:

el 25 de Mzo. de 2019

Comentada:

el 25 de Mzo. de 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by