matlab使用for循环创建增长矩阵,每个循环增加3

时间:2015-06-14 17:21:34

标签: matlab loops for-loop matrix

所以我写了这个:

HSRXdistpR = squeeze(comDatape_m1(2,7,1,:,isubj));
HSRXdistpL = squeeze(comDatape_m1(2,4,1,:,isubj));
TocomXdistp = squeeze(comDatape_m1(2,10,1,:,isubj));

for i = 1:2;
     HSRXp = NaN(8,3*i);
     HSRXp(:,i*3) = [HSRXdistpR(:,i) HSRXdistpL(:,i) TocomXdistp(:,i)];
end

在第一部分中,我只是从5-D矩阵中选择数据,没什么特别的。这里所有重要的是它每行创建一个8x2矩阵(isubj = 2)。现在我想将每个矩阵的第一列添加到8x3矩阵中,然后将每个矩阵的第二列添加到相同的矩阵中(创建一个8x6矩阵)。由于我的主题数量会有所不同,我想在for循环中这样做。这样,如果isubj增加到3,它应该继续创建一个8x9矩阵。

所以我尝试创建一个矩阵,对于i的每次迭代,它将增加3,它选择3个矩阵中每个矩阵的第i列,然后将它们放在那里。

但是我收到以下错误:

Subscripted assignment dimension mismatch.

是否可以让for循环中的矩阵增长多于一个?或者应该怎么做呢?

1 个答案:

答案 0 :(得分:0)

这是你的问题:

HSRXp(:,i*3) = [HSRXdistpR(:,i) HSRXdistpL(:,i) TocomXdistp(:,i)];

您尝试将n x 3矩阵(RHS)分配到n x 1向量(LHS)中。简单地使用水平串联会更容易:

HSRXp = [HSRXp, [HSRXdistpR(:,i) HSRXdistpL(:,i) TocomXdistp(:,i)]];

但这意味着每一步都会重新分配,如果矩阵变大,可能会降低代码的速度。