matlab如何遍历工作空间中的所有对象

时间:2011-08-26 18:29:27

标签: matlab object workspace

我有一个matlab工作区,其中所有变量都是使用load命令从.mat文件加载的。现在,我想迭代所有这些对象并对它们执行操作。

是否有人在没有明确说明其名称的情况下访问对象?例如工作区(1)?

2 个答案:

答案 0 :(得分:10)

我同意@ Simon的回答,但是如果您感兴趣的是从单个.mat文件加载的变量,那么最好使用结构赋值形式的load:

S = load('myfile.mat')

现在,您的工作区中没有“x”,“y”,“z”,而是S.xS.yS.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