所以我写了这个:
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循环中的矩阵增长多于一个?或者应该怎么做呢?
答案 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)]];
但这意味着每一步都会重新分配,如果矩阵变大,可能会降低代码的速度。