How to write in short form?

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

 Accepted Answer

Jan
Jan on 28 Oct 2015
Edited: Jan on 30 Oct 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 Comments

thank you for your help Jan I am getting this error
Cell contents reference from a non-cell array object
I changed the curly brackets, but it still warns me about the error
See [EDITED]
Appreciated Jan

Sign in to comment.

More Answers (1)

Thorsten
Thorsten on 28 Oct 2015
Edited: Thorsten on 28 Oct 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 Comments

Better to avoid eval and simply load the data into one structure:
S = load(...);
Why eval is poor code that should be avoided:
thank you all, it works

Sign in to comment.

Categories

Tags

Asked:

on 28 Oct 2015

Commented:

on 30 Oct 2015

Community Treasure Hunt

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

Start Hunting!