finding unique rows with largest value in 3rd column

6 次查看(过去 30 天)
Suppose I have a matrix
A=
1 2 3
1 3 8
2 1 3
2 1 5
2 2 8
1 2 9
4 3 2
I want to find a matrix which has unique first column and largest 3rd column.. So my resultant matrix should be
1 2 9
2 2 8
4 3 2
Any help will be highly appreciated!
  2 个评论
Mahi Nazir
Mahi Nazir 2013-12-19
No order doesn't matter. Actually second column is not useful. Uniqueness is based on first column and one having largest value of 3rd column is selected.

请先登录,再进行评论。

采纳的回答

Sean de Wolski
Sean de Wolski 2013-12-19
编辑:Sean de Wolski 2013-12-19
Assuming that the order of the first two columns doesn't matter and that your expected matrix is missing [1 3 8]
Old/clarified in comments
x = [1 2 3
1 3 8
2 1 3
2 1 5
2 2 8
1 2 9
4 3 2];
[uv,~,idx] = unique(sort(x(:,[1 2]),2),'rows');
v = accumarray(idx,x(:,3),[],@max);
vv = [uv v]
vv =
1 2 9
1 3 8
2 2 8
3 4 2
  5 个评论
Mahi Nazir
Mahi Nazir 2013-12-19
Thanks! I want to preserve the second column information, I need that in future... so I want all the 3 columns in my answer... I am sure it must be a small modification but I am unable to do it
Sean de Wolski
Sean de Wolski 2013-12-19
Well do you want the first occurrence of the second column or the maximum one? etc. I guess, how do you wish to pick the second value (e.g. 2 1 v. 2 2)

请先登录,再进行评论。

更多回答(1 个)

Muhammet Bozkaya
Muhammet Bozkaya 2017-11-20
编辑:Muhammet Bozkaya 2017-11-20
Simple answer for this case.
First sort rows with ascending 1st column and descending 3rd column(column you want to get the max), then see take unique...
A=[1 2 3
1 3 8
2 1 3
2 1 5
2 2 8
1 2 9
4 3 2];
A=sortrows(A,[1 -3]);
[~,idx]=unique(A(:,1));
A=A(idx,:);
result: 1 2 9
2 2 8
4 3 2

类别

Help CenterFile Exchange 中查找有关 Line Plots 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by