MATLAB如何迭代遍历工作区中的所有对象

6
我有一个Matlab工作空间,其中所有变量都是使用load命令从.mat文件加载的。现在,我想遍历所有这些对象并对它们执行操作。
是否有一种方法可以访问这些对象而不明确指定它们的名称?例如workspace(1)?
2个回答

10

你可以使用who来获取所有变量的字符串列表:

myvars = who;

如果你想对变量的内容进行操作(只给出变量名who),可以像这样做:

for i=1:length(myvars)
    myfunction(eval(myvars(i)))
end

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接