【问题标题】:matlab how to iterate through all objects in a workspacematlab如何遍历工作区中的所有对象
【发布时间】:2011-11-04 18:16:03
【问题描述】:

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

有没有办法在不明确说明它们的名字的情况下访问这些对象?例如工作区(1)?

【问题讨论】:

    标签: matlab object workspace


    【解决方案1】:

    我同意@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
    

    【讨论】:

      【解决方案2】:

      您可以使用who 将所有变量的列表作为字符串获取:

      myvars = who;
      

      那么如果你想对变量的内容做一些事情(who 只给出变量名),你可以这样做:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-08
        • 2016-09-24
        • 2021-01-05
        • 2013-11-04
        • 1970-01-01
        • 1970-01-01
        • 2012-05-17
        相关资源
        最近更新 更多