2013-12-14 25 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