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

17 ビュー (過去 30 日間)
Khanh
Khanh 2014 年 11 月 20 日
編集済み: Khanh 2014 年 11 月 23 日
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 件のコメント
Andrew Reibold
Andrew Reibold 2014 年 11 月 20 日
Do you ONLY want the duplicated 250's removed, or ALL of the duplicated values removed (Like the duped 1173 as well)?
Khanh
Khanh 2014 年 11 月 20 日
Thanks for your reply. Just value 250

サインインしてコメントする。

採用された回答

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 件のコメント
Andrew Reibold
Andrew Reibold 2014 年 11 月 20 日
I think she needs it to work for all duplicates (like 1173 also), not just 250
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 件のコメント
Matt
Matt 2014 年 11 月 20 日
Note that the unique will remove all non-unique values, not just the ones with 250 in the first column. Still, if this is the goal, than this is a much better solution than removing elements one by one
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

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by