2015-06-14 56 views
0

所以我写了这个日益增长的矩阵:MATLAB创建的循环,增长了3%环

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矩阵。

因此,我试图创建一个矩阵,每增加3我为每个迭代,它选择每个3矩阵的第i列,然后把它们放在那里。

不过,我得到以下错误:

Subscripted assignment dimension mismatch. 

是否有可能让一个矩阵由一个以上的生长循环?或者应该怎么做呢?

回答

0

这里是你的问题:

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

你试图为n×3矩阵(RHS)指定为N×1矢量(LHS)。它会更容易简单地使用横向拼接:

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

但是,这将在每一步,如果矩阵变大这可能会减缓你的代码意味着重新分配。

+0

这是最初肯定好得多,我起初,仍然有一个奇怪的事情,虽然弹出。首先让我告诉你我的代码是这样的: 'HSRXp = NaN(8,1); 对于i = 1:2; HSRXp = [HSRXp,[HSRXdistpR(:,i)HSRXdistpL(:,i)TocomXdistp(:,i)]]; end' 但是现在HSRXp变成了一个nx7矩阵而不是nx6,其NaN列作为第一列。任何想法是什么导致这个? –

+0

哎呀!我很愚蠢。我想我知道那里发生了什么:') –

+0

发生在我们身上。 – ocstl