MATLAB中eval的反求

MATLAB中eval的反求,matlab,variables,matrix,eval,Matlab,Variables,Matrix,Eval,我希望如果有人在MATLAB方面有点经验,而不是我能在这里提供帮助,我对这个MATLAB的东西有点绝望 我在MATLAB中有一个变量列表,叫做S50,S60,S70,等等。。。尺寸1x142x192。我只是想将它们组合成一个变量,对其进行统计分析(进入维度Nx142x192) 我发现人们使用eval函数来创建变量字符串,我可以反过来做吗 for i = 1:5 eval([ 'M' num2str(i) ' = M;' ]); end 虽然我不太喜欢使用EVAL,但这里有一个可能的解决

我希望如果有人在MATLAB方面有点经验,而不是我能在这里提供帮助,我对这个MATLAB的东西有点绝望

我在MATLAB中有一个变量列表,叫做
S50
S60
S70
,等等。。。尺寸
1x142x192
。我只是想将它们组合成一个变量,对其进行统计分析(进入维度
Nx142x192

我发现人们使用
eval
函数来创建变量字符串,我可以反过来做吗

for i = 1:5
    eval([ 'M' num2str(i) ' = M;' ]);
end

虽然我不太喜欢使用EVAL,但这里有一个可能的解决方案:

%# evaluates the expression: cat(1,S50,S60,S70)
S = eval(['cat(1' sprintf(',S%d', (50:10:70)') ')']);

虽然我不太喜欢使用EVAL,但这里有一个可能的解决方案:

%# evaluates the expression: cat(1,S50,S60,S70)
S = eval(['cat(1' sprintf(',S%d', (50:10:70)') ')']);

我的第一个想法是:为什么要把它们都放在不同的变量中呢?你可以只使用一些东西,比如
cube=zero(142192,N);对于k=1,N;立方体(:,:,k)=;结束
原始数据为36700x142x192,即使是UNIX群集版本的Matlab(8TB内存)也无法处理。我当时对贴花统计很感兴趣,因此1950年、1960年、1970年的阈值水平或平均水平(m),谢谢您的帮助。我的第一个想法是:为什么要把它们都放在不同的变量中呢?你可以只使用一些东西,比如
cube=zero(142192,N);对于k=1,N;立方体(:,:,k)=;结束
原始数据为36700x142x192,即使是UNIX群集版本的Matlab(8TB内存)也无法处理。我当时对贴花统计很感兴趣,因此1950年、1960年、1970年的阈值水平或平均水平(m),谢谢您的帮助。我以后会记住这个把戏。谢谢你,它像魔术一样有效!简单地问一个问题,为什么“1”不是“3”,肯定是三维数组?@Padaiwan:根据你的描述,矩阵是三维的,其中第一个维度是单态的,你想沿着第一个维度连接起来。另外,如果你不喜欢EVAL,你的想法是什么?谢谢,这很神奇!简单地问一个问题,为什么“1”不是“3”,肯定是三维数组?@Padaiwan:根据你的描述,矩阵是三维的,其中第一个维度是单态的,你想沿着第一个维度连接。另外,如果你不喜欢EVAL,你的想法是什么?