finding unique rows with largest value in 3rd column
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Mahi Nazir
am 19 Dez. 2013
Bearbeitet: Muhammet Bozkaya
am 20 Nov. 2017
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 Kommentare
Akzeptierte Antwort
Sean de Wolski
am 19 Dez. 2013
Bearbeitet: Sean de Wolski
am 19 Dez. 2013
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 Kommentare
Sean de Wolski
am 19 Dez. 2013
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)
Weitere Antworten (1)
Muhammet Bozkaya
am 20 Nov. 2017
Bearbeitet: Muhammet Bozkaya
am 20 Nov. 2017
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
0 Kommentare
Siehe auch
Kategorien
Mehr zu Line Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!