2015-06-14 54 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