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中使用和完成此操作: