我有一个非常简短的问题。这就是我正在处理的问题:
%% 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但这并不完全适合我。
答案 0 :(得分:1)
一般情况下,你可以在循环中改变矩阵大小,但不是你现在这样做的方式。
为什么Matlab不允许你?
想象一下矩阵temp
每次迭代都会改变大小(你知道它没有,但是Matlab不知道)那么A的大小是多少? matlab应该如何调整它?
因此,如果你想做你正在做的事情,你需要预先分配A.如果你告诉Matlab A=zeros(2096,2,25)
,那么你就不会有问题。