Filter löschen
Filter löschen

Removing duplicate elements & choose maximum row value of matrix

1 Ansicht (letzte 30 Tage)
Hello,
I have an matrix, which have repeated values at row 8, I want to choose the row with maximum value in elements in column 4 and discard the rows with repeated value in column 8.
A= [1973 2 12 0.89518 1973 2 14 1468
1973 4 3 1.1867 1973 3 24 1903
1973 10 21 1.1006 1973 10 24 1307
1973 11 6 0.91814 1973 11 3 1913
1973 11 13 0.9313 1973 11 3 1913
1973 11 19 1.2501 1973 11 9 1618
1973 11 25 1.1185 1973 12 1 2953
1973 12 7 1.3553 1973 12 1 2953];
I would like to delete 4th & 7th row in this case. The desired output is:
1973 2 12 0.89518 1973 2 14 1468
1973 4 3 1.1867 1973 3 24 1903
1973 10 21 1.1006 1973 10 24 1307
1973 11 13 0.9313 1973 11 3 1913
1973 11 19 1.2501 1973 11 9 1618
1973 12 7 1.3553 1973 12 1 2953
Any help?

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 17 Nov. 2017
Bearbeitet: Andrei Bobrov am 17 Nov. 2017
[~,~,c] = unique(A(:,end),'stable');
out = A(accumarray(c,(1:size(A,1))',[],@(x)x(max(A(x,4)) == A(x,4))),:);

Weitere Antworten (1)

KSSV
KSSV am 17 Nov. 2017
Bearbeitet: KSSV am 17 Nov. 2017
Read about unique and max.
A = [1973 2 12 0.89518 1973 2 14 1468
1973 4 3 1.1867 1973 3 24 1903
1973 10 21 1.1006 1973 10 24 1307
1973 11 6 0.91814 1973 11 3 1913
1973 11 13 0.9313 1973 11 3 1913
1973 11 19 1.2501 1973 11 9 1618
1973 11 25 1.1185 1973 12 1 2953
1973 12 7 1.3553 1973 12 1 2953];
[maxval,idx] = max(A(:,4)) ;
idx = find(A(:,8)==A(idx,8)) ;
A(idx(2:end),:) = []

Kategorien

Mehr zu Matrices and Arrays 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!

Translated by