Removing rows with identical values in four columns.
1 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
采纳的回答
Azzi Abdelmalek
2015-12-27
编辑:Azzi Abdelmalek
2015-12-27
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,:)=[]
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!