MATLAB:如何动态访问变量

MATLAB: How to dynamically access variables

我声明了一些变量,这些变量由表示另一个函数的输入参数的简单行向量组成。在循环中应使用这些变量并将结果分配给结构。

现在,我的问题是如何最好地访问预定义变量的内容。我使用 eval 找到了解决方案。但是,我经常读到应该避免使用 eval。显然这不是最佳做法。那么,解决我的问题的最佳做法是什么?

varABC = [1,2,3];
varDEF = [4,5,6];
varGHI = [7,8,9];

names = {'ABC','DEF','GHI'};

result = {'result1','result2','result3'};

for i = 1 : 3
    varString = strcat('var',names{i});
    test.(result{i}) = sum(eval(varString));
end

我建议稍微重写一下您的代码

names = {'ABC','DEF','GHI'};
result = {'result1','result2','result3'};

选项 1

% Use struct instead of a simple variable
var.ABC = [1,2,3];
var.DEF = [4,5,6];
var.GHI = [7,8,9];

for i = 1 : 3
    test.(result{i}) = sum(var.(names{i}));
end

选项 2

% Use dictionary
c = containers.Map;
c('ABC') = [1,2,3];
c('DEF') = [4,5,6];
c('GHI') = [7,8,9];

for i = 1 : 3
    test.(result{i}) = sum(c(names{i}));
end