How to retain only the rows of a matrix based on the unique numbers in the first column of the matrix?
5 views (last 30 days)
Show older comments
Mohammad Sayeed
on 22 Apr 2014
Commented: Mohammad Sayeed
on 23 Apr 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 Comments
Accepted Answer
Azzi Abdelmalek
on 22 Apr 2014
Edited: Azzi Abdelmalek
on 22 Apr 2014
[ii,jj,kk]=unique(a(:,1),'stable');
out1=a(jj,:)
out2=cell2mat(accumarray(kk,1:numel(kk),[],@(x) {a(max(x),:)}));
More Answers (1)
Andrei Bobrov
on 22 Apr 2014
Edited: Andrei Bobrov
on 22 Apr 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,:);
See Also
Categories
Find more on Multidimensional Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!