matlab:循环通过var = who(* x *)并使用变量名来调用变量

时间:2016-08-16 15:36:50

标签: matlab workspace

我需要一个在我的工作区中选择特定变量的函数(使用通配符),将它们的值(=这些变量的值)赋给一个新变量, (这是我得到的部分)操纵它们,然后将这些新变量保存在旧变量名下。

varnames= who('*_small_*');

for n=length(varnames)
    new = str2cell(varnames(n);  %THIS STEP DOES NOT WORK.
    %manipulation of those values;
    filename=varnames(n);
    save(filename,new);
end;

有人知道如何调用我需要的变量并提取它们的值吗?可能我的解决方案并不是最好的,所以请随意建议替代谁。

非常感谢!

1 个答案:

答案 0 :(得分:0)

1.不要使用str2cell。而是使用大括号。

varname = varnames{n};

2. eval函数不是最佳实践,但它可能是解决此问题的最简单方法。

eval(sprintf('new = %s;',varname)); %assign variable with varname to new

3.如果您只是覆盖工作区中的变量,请不要使用save。再次使用eval。

eval(sprintf('%s = new;',varname)); %assign 'new' value to varname