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 commentaire

Guillaume
Guillaume le 25 Mar 2019
Why not use datetime instead of datenum? It's more flexible and more reliable.

Connectez-vous pour commenter.

 Réponse acceptée

Stephen23
Stephen23 le 25 Mar 2019
Modifié(e) : Stephen23 le 25 Mar 2019

1 vote

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

Plus de réponses (0)

Catégories

En savoir plus sur File Operations dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by