Removing rows with identical values in four columns.

7 vues (au cours des 30 derniers jours)
Miguel L
Miguel L le 27 Déc 2015
Commenté : Miguel L le 27 Déc 2015
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.

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 27 Déc 2015
Modifié(e) : Azzi Abdelmalek le 27 Déc 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,:)=[]

Plus de réponses (0)

Catégories

En savoir plus sur Weather and Atmospheric Science 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!

Translated by