在Matlab中使用'unique',保留第一次出现

时间:2011-03-28 10:25:06

标签: matlab

大家好 我的数据有时看起来像这样:
时间...开/关...值
50 ...... 1 ......... 70
50 ...... 0 ......... 70
50 ...... 1 ......... 70

我想删除重复的'on'行,也删除'off'行,因为它是多余的,从'off'开始对我的脚本不利。

似乎与独特的'第一'论证应该有所帮助,但我没有快乐。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

使用unique与'rows'参数而不是'first'来删除重复的'on'。要删除'off',一个简单的解决方案是首先将all设置为'on',然后使用unique。

A = [50 1 70; 50 0 70; 50 1 70]
A =

    50     1    70
    50     0    70
    50     1    70

A(:,2) = 1 %Set all on/off values to 'on'

A =

    50     1    70
    50     1    70
    50     1    70

R = unique(A,'rows')

R =

    50     1    70

编辑:要仅在两个相邻行相等时删除“关闭”行,您需要比较邻居行。有很多方法可以做到这一点,但这里有一个我快速制作的一般 Nx3 矩阵

rows = 2:length(A)-1;
p=find(all(A(rows+1,:)==A(rows-1,:),2)); %Get index of where rows are equal
A(rows(p),2) = 1; Set those rows to be 'on', so they can be removed by unique