多语言展示
当前在线:953今日阅读:84今日分享:32

MATLAB如何对数组元素去重(得到集合)?

介绍MATLAB中的unique和uniquetol函数,它们可以根据有重复元素的列表构造集合。
工具/原料

MATLAB 2016a

unique函数用法
1

对于列表A,使用unique(A)返回由A中的不重复元素构成的列表,相当于列表转集合。

2

函数unique可以有三个返回值。第一个是返回的集合列表;第二个是返回集合列表中每一项在原有列表中的位置;第三个是原有列表中的每一项在返回集合列表中的位置。如图。

3

对于table表格,unique函数会将每一行看作整体,返回不含有重复项的表格。

4

unique可以带有参数'rows',这样在处理矩阵时,会将矩阵的每一行看作整体。

5

unique还可以带有参数'stable'或者'sorted',表示求出的集合列表是否排序。'stable'表示按照原有相对顺序,'sorted'表示对得到的集合排序。

6

unique把NaN看作互不相同的元素,这一点和很多其它集合操作函数一样。

uniquetol函数用法
1

uniquetol可以合并大小相差小于某特定值的数据。uniquetol(A, tol)会按照abs(u-v) <= tol*max(abs(A(:)))来判断A中的元素u和v算不算“同一个”元素。如图,unique(A, 0.01)将会合并1.999和2.000

2

uniquetol和unique类似,可以有三个返回值,每个返回值的功能也是类似的。

3

uniquetol参数较多,与unique不同,没有单个的'rows'参数。需要配合使用'ByRows',true来达到unique中'rows'的效果,即将每一行视为整体。

4

uniquetol还有参数'OutputAllIndices',true使用此参数,如图,ia列表将是一个元胞数组,其中一个元胞是一个重复元素的所有下标。

5

uniquetol还支持参数 'DataScale',[列表]/单个数值如果是列表,将表示每一列的DS值,如果是单个数值,表示共同的DS值。如图,第一个Inf表示第一列元素无视大小差距;第二个100表示第二列的DS值为100...

注意事项
1

风格类似的函数还有ismember与ismembertol,用于判断一些元素是否在某一列表中。

2

求集合并集用union,会自动合并重复元素。

推荐信息