我有一个Matlab工作空间,其中所有变量都是使用load命令从.mat文件加载的。现在,我想遍历所有这些对象并对它们执行操作。
是否有一种方法可以访问这些对象而不明确指定它们的名称?例如workspace(1)?
是否有一种方法可以访问这些对象而不明确指定它们的名称?例如workspace(1)?
你可以使用who
来获取所有变量的字符串列表:
myvars = who;
如果你想对变量的内容进行操作(只给出变量名who
),可以像这样做:
for i=1:length(myvars)
myfunction(eval(myvars(i)))
end
我同意@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