Delete rows that have the first same value and keep one row in matrix with 2 colums?

조회 수: 26(최근 30일)
Hi everyone,
I have an array:
x=[0,0 ; 250,1050 ; 250,1051 ; 1173,3050 ; 1173 3150].
I don't know how to delete the rows that has the first value is 250 and just keep one.
The row may be (250,1050) or (250,1051), whatever but just one row.
Could someone please suggest me how to do it?
Many thanks.
  댓글 수: 2

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

채택된 답변

Matt
Matt 2014년 11월 20일
편집: Matt 2014년 11월 20일
Khanh,
Try something like this. . .
ind250 = x(:,1) == 250;
if numel(ind250)>1
x(ind250(2:end),:) = [];
end
  댓글 수: 2
Khanh
Khanh 2014년 11월 21일
편집: Khanh 2014년 11월 21일
Thanks all of you. Matt'answer is the best I want. It works great.

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

추가 답변(2개)

C.J. Harris
C.J. Harris 2014년 11월 20일
Do you mean something like this?
x = [0,0 ; 250,1050 ; 250,1051 ; 1173,3050 ; 1173 3150];
[~,idx] = unique(x(:,1));
out = x(idx,:)
out =
0 0
250 1051
1173 3150
  댓글 수: 2
Khanh
Khanh 2014년 11월 23일
편집: Khanh 2014년 11월 23일
The result from this code is
out = [0 0;250 1051;1173 3150]
Can I ask you a question? How can I get the result with 1051 (not 1050 )?
Thanks.

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


Andrew Reibold
Andrew Reibold 2014년 11월 20일
편집: Andrew Reibold 2014년 11월 20일
This removes any rows where the value in the first column has already been used.
[~,idx] = unique(x(:,1)); %which rows have a unique first value?
x = x(idx,:) %only use those
Output:
x =
0 0
250 1050
1173 3050

Community Treasure Hunt

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

Start Hunting!

Translated by