从2D矩阵动态填充3D矩阵

时间:2014-10-20 11:18:01

标签: matlab matrix

我有一个非常简短的问题。这就是我正在处理的问题:

  %% Load all samples 
nazwa = dir('*.asc');
temp = zeros(1,1);
A = zeros(1,1,1);

for i = 1:25
    filename = nazwa(i).name;
    temp = importfile(filename);
    A(:,:,i) = temp;
end

temp是一个4096x2矩阵,我希望得到一个4096x2x25矩阵A。使用此代码,我收到Assignment has more non-singleton rhs dimensions than non-singleton subscripts 错误。我知道我可以使用单元格,或创建更大的临时矩阵,一次包含所有数据,然后将其转换为3D矩阵,但我想知道我的想法有什么问题。是索引吗?我在这里发现了类似的问题:http://www.mathworks.com/matlabcentral/answers/57275-adding-values-to-3d-matrix但这并不完全适合我。

1 个答案:

答案 0 :(得分:1)

一般情况下,你可以在循环中改变矩阵大小,但不是你现在这样做的方式。

为什么Matlab不允许你?

想象一下矩阵temp每次迭代都会改变大小(你知道它没有,但是Matlab不知道)那么A的大小是多少? matlab应该如何调整它?

因此,如果你想做你正在做的事情,你需要预先分配A.如果你告诉Matlab A=zeros(2096,2,25),那么你就不会有问题。