Removing rows with identical values in four columns.

1 view (last 30 days)
Hello. I have a large matrix with dimensions of 300123 x 8.
As a note, I would like to say that in the matrix, column 1 to column 4 are time data (year, month, day, hour), and column 5 to column 8 are meteorological data measurements.
I want to delete all rows which have the same elements in column 1, column 2, column 3 and column 4.
For instance: a = [2009,10,9,5,0,0,0,0; 2009,10,2,5,3,8,7,7; 2009,10,9,5,2,1,9,1] => [2009,10,2,5,3,8,7,7]
In this example, column 1 to column 4 has repeated values in row 1 and row 3 (2009,10,9,5), and both rows are completely removed.
I want to implement this kind of solution to my whole matrix with dimensions of 300123 x 8.
Thanks in advance.

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 27 Dec 2015
Edited: Azzi Abdelmalek on 27 Dec 2015
a = [2009,10,9,5,0,0,0,0
2009,10,2,5,3,8,7,7
2009,10,9,5,2,1,9,1
2004,10,9,5,2,1,9,1
2004,10,9,5,2,1,9,1
2004,10,9,5,2,1,9,1
2004,10,9,5,2,1,9,1
2024,10,9,5,2,1,9,1]
[ii,jj,kk]=unique(a(:,1:4),'rows','stable');
uu=accumarray(kk,1);
w=logical(zeros(numel(kk),1))
for k=1:numel(uu)
if uu(k)>1
w=w | (kk==k);
end
end
a(w,:)=[]

More Answers (0)

Categories

Find more on Structures 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!