一种在Matlab中动态创建变量的方法?

时间:2014-07-15 13:45:10

标签: matlab variables dynamic-programming

我正在研究的案例是使用良好的编码实践(等等)划分我收集的大型三维数据数组,现在我需要将此数组的各个层分割成单独的变量以进行单独处理在其他地方,我无法调用我的数据BigData(:,:,n)

所以我想创建一个循环,我在其中创建新的变量

for i=1:n

createVariable('user_' i) = BigData(:,:,i);

end

如果不每次手动编写 n 新变量,我该怎么做?

user_1 = BigData(:,:,1);
user_2 = BigData(:,:,2);
user_3 = BigData(:,:,3);
.
.
.

2 个答案:

答案 0 :(得分:1)

您的免责声明听起来很有说服力:-)我也会得到那些赞成票。但是,要明确:为此使用单独的变量是不好的做法。

您可以使用assignin创建变量并为其指定值:

for ii = 1:n
    assignin('base', ['user_' num2str(ii)], BigData(:,:,ii));
end

是的,使用单独的变量是不好的做法。

答案 1 :(得分:1)

尝试使用eval() - 但正如您所说,它被视为非常糟糕的做法。如果你仍然想要使用它,它就像是:

for i = 1:n
    eval(['user_',num2str(i),' = BigData(:,:,',num2str(i),');']);
end