Matlab 在多个列相同时保留找到的第一个唯一行

Matlab 在多个列相同时保留找到的第一个唯一行,matlab,unique,octave,Matlab,Unique,Octave,我有一个按第一列排序的数组,但我只想在第二列和第三列相同时保留找到的第一个唯一行。 我知道我可以使用unique(array1(:,2),“first”)和unique(array1(:,3),“first”)获得第一个匹配项。但是我想保留第一个唯一的行 当第二列和第三列都相同时 示例阵列1: 1 140.58939 226.65578 2 143.23078 227.31933 3 143.23078 227.31933 4 143.23078 227.8363

我有一个按第一列排序的数组,但我只想在第二列和第三列相同时保留找到的第一个唯一行。

我知道我可以使用
unique(array1(:,2),“first”)
unique(array1(:,3),“first”)
获得第一个匹配项。但是我想保留第一个唯一的行 当第二列和第三列都相同时

示例阵列1:

1   140.58939   226.65578
2   143.23078   227.31933
3   143.23078   227.31933
4   143.23078   227.83631
5   143.23078   229.79236
6   146.822     231.705
7   146.822     231.705
8   89.083      123.43
9   146.822     231.705
10  167.23      231.705
1   140.58939   226.65578
2   143.23078   227.31933
4   143.23078   227.83631
5   143.23078   229.79236
6   146.822     231.705
8   89.083      123.43
10  167.23      231.705
我试图使阵列看起来像新阵列1:

1   140.58939   226.65578
2   143.23078   227.31933
3   143.23078   227.31933
4   143.23078   227.83631
5   143.23078   229.79236
6   146.822     231.705
7   146.822     231.705
8   89.083      123.43
9   146.822     231.705
10  167.23      231.705
1   140.58939   226.65578
2   143.23078   227.31933
4   143.23078   227.83631
5   143.23078   229.79236
6   146.822     231.705
8   89.083      123.43
10  167.23      231.705
Ps:我使用的是类似于Matlab的倍频程4.0。

怎么样:

[C,IA,~]=unique(array1(:,2:3),'rows');
array1_unique = array1(sort(IA),:)
结果:

array1_unique  =

1.0000  140.5894  226.6558
2.0000  143.2308  227.3193
4.0000  143.2308  227.8363
5.0000  143.2308  229.7924
6.0000  146.8220  231.7050
8.0000   89.0830  123.4300
10.0000  167.2300  231.7050
从unique直接返回的
C
,是一个排序数组。因此,您还需要索引向量

[C,IA,IC]=UNIQUE(A,'rows')还返回索引向量IA和IC,使得C=A(IA,:)和A=C(IC,:)


请注意,这是在Matlab中完成的。

以下是如何在倍频程4.0中使用和完成此操作: