我正在尝试使用嵌套for循环在Matlab中填充3D数组。内部for循环创建一个大小为1920x16的矩阵Xtemp。外部for循环应该将68个Xtemp矩阵中的每一个输入到3D阵列X中。
Xtemp = [];
X = [];
X = zeros(1920,16,68);
for j= 1:68
for i= 1:16
Xtemp = [Xtemp illum(:, i, j)];
end
X(:,:,j) = Xtemp;
end
我收到以下错误:
Subscripted assignment dimension mismatch.
Error in proj1_lda (line 25)
X(:,:,j) = Xtemp;
如果我删除外部for循环,我只能将第一个矩阵(j = 1)填充到3D数组中,因此我知道尺寸匹配且语法应该是正确的。但是当我尝试填写所有68个矩阵(或任何超过1个)时,我得到了错误。有趣的是,即使我不止一次运行for循环,但我使用 X(:,:1)= Xtemp; ,这也会产生错误。所以似乎问题与多次运行外部for循环直接相关。
我花了很多时间试图解决这个问题,并希望得到任何帮助。
答案 0 :(得分:2)
第一次迭代后,您忘记清除Xtemp
。
因此,在第二次完成内循环后,Xtemp
的“宽度”为32。
您可以将行Xtemp = []
移动到外循环的开头。