How to write in short form?

2 Ansichten (letzte 30 Tage)
Lilya
Lilya am 28 Okt. 2015
Kommentiert: Lilya am 30 Okt. 2015
Greetings,
How can I write the following command in a short form to avoid this repetition?
clear
%%load all Residual .mat files
s = what; %look in current directory
%s=what('dir') %change dir for your directory name
matfiles=s.mat
for a=1:numel(matfiles)
load(char(matfiles(a)))
end
SDED = vertcat(SDED1,SDED2,SDED3,SDED4,SDED5,SDED6, ...
SDED7,SDED8,SDED9,SDED10,SDED11,SDED12);
save SDED.mat SDED
Thank you for the help

Akzeptierte Antwort

Jan
Jan am 28 Okt. 2015
Bearbeitet: Jan am 30 Okt. 2015
s = dir('*.mat');
C = cell(1, numel(s));
for a = 1:numel(s)
Data = load(s(a).name); % [EDITED]
% Now assuming that "SDED1" e.g. is the only variable in the MAT file:
C(a) = struct2cell(Data);
end
SDED = vertcat(C{:});
save SDED.mat SDED
  3 Kommentare
Jan
Jan am 30 Okt. 2015
See [EDITED]
Lilya
Lilya am 30 Okt. 2015
Appreciated Jan

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Thorsten
Thorsten am 28 Okt. 2015
Bearbeitet: Thorsten am 28 Okt. 2015
If you know that the SDED are numbered from 1 to 12:
s = sprintf('SDED%d, ', 1:12);
eval(['SDED = vertcat(' s(1:end-2) ');'])
or if you want to use all SDED variables in the workspace:
x = whos('SDED*');
s = sprintf('%s, ', x.name);
eval(['SDED = vertcat(' s(1:end-2) ');'])
  2 Kommentare
Stephen23
Stephen23 am 28 Okt. 2015
Better to avoid eval and simply load the data into one structure:
S = load(...);
Why eval is poor code that should be avoided:
Lilya
Lilya am 29 Okt. 2015
thank you all, it works

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by