2013-12-14 36 views
1

我有一個由2行和3列組成的數組X(向量的數組)。使用matlab從我的陣列中刪除一行

a1=[1 2 3]; 
b1=[2 5 4]; 
c1=[2 2 4]; 

a2=[1 6 5]; 
b2=[1 6 4]; 
c2=[4 5 7]; 

X= {a1,b1,c1 ; a2,b2,c2}; 

假設我請從陣列X第一行(a1, b1 and c1)

[m n]=size(X); % m=2 and n=3 
selected_line = X(1, 1:n); 

如何重寫相同的X但沒有第一行?換句話說,我如何從我的表中刪除選定的行,以便獲得上述的{a2, b2, c2}而不是X數組?

+0

[刪除的行和列的可能重複從MATLAB矩陣快速](http://stackoverflow.com/questions/4163876/removing-rows-and-columns-from-matlab-matrix-quickly)。此外,相關的問題[如何在Matlab中選擇一個子矩陣(不以任何特定模式)](http://stackoverflow.com/questions/13091193/how-to-select-a-submatrix-not-in-any-特定模式在matlab/13093242#13093242)值得一讀... –

回答

3

通常,通過將空矩陣「分配」爲空(例如參見herehere),可以刪除矩陣或單元陣列中的行或列或向量中的條目。所以你的情況,以去除細胞陣列X使用的第一線

X(1,:) = []; %// remove first row 

另一種可能性是指定行依然存在,而不是它的刪除:

X = X(2:end,:); %// take from row 2 to last 
+0

這是更快? –

+2

@Parag這可能取決於你的Matlab版本和陣列的大小......更好地測試每個特定的情況。在我的系統中,在原始文章中的數據,第二個是更快一點 –

+0

謝謝您的迴應:),是它x(1,:) = []或x(1,:)= {}? – Christina