我有一个矩阵,其中最右边的元素以降序重复YYYYMMDD日期,例如:
40 1630 1711 20140326
169 700 950 20140326
40 1630 1711 20140326
169 700 950 20140327
40 1630 1711 20140327
169 700 950 20140327
40 1630 1711 20140327
169 700 950 20140328
40 1630 1711 20140328
169 700 950 20140328
40 1630 1711 20140328
3049 700 950 20140331
40 1630 1711 20140331
3049 700 950 20140331
40 1630 1711 20140331
169 700 950 20140401
40 1630 1711 20140401
169 700 950 20140401
40 1630 1711 20140401
169 700 950 20140402
40 1630 1711 20140402
在每个日期中,我想只保留与最大元素对应的行 在最左边的列中。所以我想制作一个新矩阵:
169 700 950 20140326
169 700 950 20140327
169 700 950 20140328
3049 700 950 20140331
169 700 950 20140402
这样做的最佳方式是什么?
创意:使用diff查找日期更改时的索引,并使用for循环使用max循环查找正确的行。没有for循环的任何解决方案?
答案 0 :(得分:5)
根据第一列尝试先sort the rows,然后根据最后一列找到第一个unique dates:
B = sortrows(A)
[~, ia] = unique(B(:,4))
B(ia,:)
ans =
169 700 950 20140326
169 700 950 20140327
169 700 950 20140328
3049 700 950 20140331
169 700 950 20140401
169 700 950 20140402