MATLAB如何对数组元素去重(得到集合)?
来源:网络收集 点击: 时间:2024-08-13对于列表A,使用unique(A)返回由A中的不重复元素构成的列表,相当于列表转集合。

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

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

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

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

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

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

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

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


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

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

风格类似的函数还有ismember与ismembertol,用于判断一些元素是否在某一列表中。
求集合并集用union,会自动合并重复元素。
MATLAB集合运算版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_1118387.html