如何使用嵌套for循环在Matlab中填充3D数组?

时间:2018-04-22 11:07:18

标签: arrays matlab for-loop matrix multidimensional-array

我正在尝试使用嵌套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循环直接相关。

我花了很多时间试图解决这个问题,并希望得到任何帮助。

1 个答案:

答案 0 :(得分:2)

第一次迭代后,您忘记清除Xtemp

因此,在第二次完成内循环后,Xtemp的“宽度”为32。

您可以将行Xtemp = []移动到外循环的开头。