仅保留间隔内具有最大元素的矩阵行

sie*_*gel 2 matlab

我有一个矩阵,其中最右边的元素以降序重复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循环的任何解决方案?

Ste*_*fin 5

尝试首先根据第一列对行进行排序,然后根据最后一列查找第一个唯一日期:

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)