我有一个matlab工作区,其中所有变量都是使用load命令从.mat文件加载的。现在,我想迭代所有这些对象并对它们执行操作。
是否有人在没有明确说明其名称的情况下访问对象?例如工作区(1)?
答案 0 :(得分:10)
我同意@ Simon的回答,但是如果您感兴趣的是从单个.mat文件加载的变量,那么最好使用结构赋值形式的load:
S = load('myfile.mat')
现在,您的工作区中没有“x”,“y”,“z”,而是S.x
,S.y
和S.z
。
然后,您可以使用以下内容迭代结构的所有字段:
for f = fieldnames(S)'
disp(['Field named: ' f{1} ]);
disp('Has value ')
disp(S.(f{1}));
end
答案 1 :(得分:9)
您可以使用who
将所有变量的列表作为字符串获取:
myvars = who;
然后如果你想对变量的内容做些什么(who
只给出变量名),你可以这样做:
for i=1:length(myvars)
myfunction(eval(myvars(i)))
end