How to erase data from a matrix from the command line?

INTRO: Hi, I have a matrix Mij and would like to erase the rows i whenever the row-value of two columns are identical (for example:Mi2=Mi3)
Example:
M=3 1.2 13 2
1.2 0.3 0.3 10
10 2 1 0
0.7 5 3 0.4
The new matrix
Nij= 3 1.2 13 2
10 2 1 0
0.7 5 3 0.4
I wonder if someone could help me how to solve this issue
Thanks in advance
Emerson

 채택된 답변

Matt Fig
Matt Fig 2012년 10월 26일
M=[3 1.2 13 2
1.2 0.3 0.3 10
10 2 1 0
0.7 5 3 0.4];
Nij = M(all(diff(sort(M,2),[],2),2),:)

댓글 수: 5

Emerson De Souza
Emerson De Souza 2012년 10월 26일
편집: Emerson De Souza 2012년 10월 26일
Hi Matt Fig,
thank you for your suggestion. You answered exact to the situation: 'whenever the row-value of two columns are identical'. Now, how the command changes if i want to specify two columns, for example: columns 3 and 4? The matrix above will not have any row to erase, but I would like to know how to change the commands.
Thank you in advance for everything
Emerson
You mean you want to delete columns 3 and 4? Or you only want to keep columns 3 and 4?
I mean if the row-values of columns 3 and 4 are identical, then erase that row (Not identical row values between columns 2 and 3 as above).
For example, if
M=[3 1.2 13 2
1.2 0.3 0.3 10
10 2 1 1
0.7 5 3 0.4];
then
N=[3 1.2 13 2
1.2 0.3 0.3 10
0.7 5 3 0.4];
Same idea:
M = [1 2 3 4;5 6 7 8;1 2 3 3;6 7 8 9;3 4 5 5];
M(~diff(M(:,3:4),[],2),:) = []
Now I got it, thank you for your attention
Wish you a nice night
Emerson

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by