【发布时间】:2011-11-04 18:16:03
【问题描述】:
我有一个 matlab 工作区,其中所有变量都是使用 load 命令从 .mat 文件加载的。现在,我想遍历所有这些对象并对它们执行操作。
有没有办法在不明确说明它们的名字的情况下访问这些对象?例如工作区(1)?
【问题讨论】:
我有一个 matlab 工作区,其中所有变量都是使用 load 命令从 .mat 文件加载的。现在,我想遍历所有这些对象并对它们执行操作。
有没有办法在不明确说明它们的名字的情况下访问这些对象?例如工作区(1)?
【问题讨论】:
我同意@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
【讨论】:
您可以使用who 将所有变量的列表作为字符串获取:
myvars = who;
那么如果你想对变量的内容做一些事情(who 只给出变量名),你可以这样做:
for i=1:length(myvars)
myfunction(eval(myvars(i)))
end
【讨论】: