我有一个矩阵,其中最右边的元素以降序重复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
Run Code Online (Sandbox Code Playgroud)
在每个日期中,我想只保留与最左列中最大元素对应的行.所以我想制作一个新的矩阵:
169 700 950 20140326
169 700 950 20140327
169 700 950 20140328
3049 700 950 20140331
169 700 950 20140402
Run Code Online (Sandbox Code Playgroud)
做这个的最好方式是什么?
想法:使用diff查找日期更改时的索引,并使用for循环使用max循环查找正确的行.没有for循环的任何解决方案?
尝试首先根据第一列对行进行排序,然后根据最后一列查找第一个唯一日期:
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
Run Code Online (Sandbox Code Playgroud)