How to write in short form?

6 次查看(过去 30 天)
Lilya
Lilya 2015-10-28
评论: Lilya 2015-10-30
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

采纳的回答

Jan
Jan 2015-10-28
编辑:Jan 2015-10-30
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 个评论

请先登录,再进行评论。

更多回答(1 个)

Thorsten
Thorsten 2015-10-28
编辑:Thorsten 2015-10-28
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 个评论
Stephen23
Stephen23 2015-10-28
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 2015-10-29
thank you all, it works

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 File Operations 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by