How to retain only the rows of a matrix based on the unique numbers in the first column of the matrix?
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Mohammad Sayeed
le 22 Avr 2014
Commenté : Mohammad Sayeed
le 23 Avr 2014
Hello guys Say that a=[1 3 3; 1 4 3; 2 4 3; 2 5 2; 2 4 2; 3 2 1; 4 3 4; 4 3 2] I need to keep the rows where I have only unique numbers in the first column of the matrix. That means I want to have this matrix a= [1 3 3; 2 4 3; 3 2 1; 4 3 4]. Or I also need to get [1 4 3; 2 4 2; 3 2 1; 4 3 2]. That means retaining the last unique row (based on only the first column) instead of the first. Are they possible? please help.
Kind regards
Sayeed
0 commentaires
Réponse acceptée
Azzi Abdelmalek
le 22 Avr 2014
Modifié(e) : Azzi Abdelmalek
le 22 Avr 2014
[ii,jj,kk]=unique(a(:,1),'stable');
out1=a(jj,:)
out2=cell2mat(accumarray(kk,1:numel(kk),[],@(x) {a(max(x),:)}));
Plus de réponses (1)
Andrei Bobrov
le 22 Avr 2014
Modifié(e) : Andrei Bobrov
le 22 Avr 2014
[~,b] = unique(a(:,1),'first');
out1 = a(b,:);
out2 = a([b(2:end)-1;size(a,1)],:);
or
[~,b1] = unique(a(:,1),'first');
[~,b2] = unique(a(:,1),'last');
out1 = a(b1,:);
out2 = a(b2,:);
Voir également
Catégories
En savoir plus sur Multidimensional Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!