2016-08-10 104 views
0

相似的第二列元素的行我有這樣的矩陣:如何使用循環來刪除MATLAB

A=[2,2,4;1,2,3;4,5,6;4,5,6;4,5,6;7,8,9] 

如何使用一個for循環刪除具有其第二列元素一樣行matlab中的前一行第二列元素?目標是到達:

A=[2,2,4;4,5,6;7,8,9] 
+0

請考慮接受一個答案,如果他們解決你的問題。這是答案左側的複選標記。謝謝! :) –

回答

0

我覺得這個示例代碼可以做任務:

A=[2,2,4;1,2,3;4,5,6;4,5,6;4,5,6;7,8,9] 

% First row will always be the same of the A matrix 
res_mat(1,:) = A(1,:); 
row = 2; 

for i = 2 : size(A,1) 
    if A(i,2) ~= A(i-1,2) 
    res_mat(row,:) = A(i,:); 
    row = row + 1; 
    end 
end 

res_mat 

HTH)

5

無環路的需要!

什麼,你可以在這裏做的是建立一個合理的載體,在那裏是第二列之間的差異的地方true,並false其中值等於:

這可以通過使用diff這樣來實現: diff(A(:,2))~=0。現在,您還需要包含第一行,因此在該向量的開頭添加一個true[true; diff(A(:,2))~=0)]。使用這個載體,選擇你想要的行,並使用:,以確保您獲得的所有列:

A=[2,2,4;1,2,3;4,5,6;4,5,6;4,5,6;7,8,9] 
B = A([true; diff(A(:,2))~=0],:) 
B =  
    2 2 4 
    4 5 6 
    7 8 9