MATLAB如何对数组元素去重(得到集合)
介绍MATLAB中的unique和uniquetol函数,它们可以根据有重复元素的列表构造集合。
对于列表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...
版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/life/112706.html