MATLAB如何使用unique函数取集合的单值元素
【语法说明】
Y=unique(A):A可以是任意形状的向量、矩阵或数组,向量Y返回A中的所有不重复元素,并进行升序排序。当A为行向量时,Y也为行向量;当A为列向量或矩阵、多维数组时,Y为列向量。A也可以是由字符串构成的细胞数组。
Y=unique(A,‘rows’):A为矩阵,Y返回A中不重复的行组成的矩阵。
[Y,I,J]=unique(A):I为Y中的元素在A中的位置索引,即Y=A(I),J为A中的元素在Y中的位置索引,即A=Y(J)。
[Y,I,J]=unique(A,‘rows’):I为Y中的行在A中的位置索引,即Y=A(I,:),J为A中的行在Y中的位置索引,即A=Y(J,:)。
[Y,I,J]=unique(…,‘first’):计算I时,对于A中的重复元素或重复行,取其第一次出现的位置索引, [Y,I,J]=unique(A)或[Y,I,J]=unique(A,‘rows’)默认取重复元素或重复行最后一次出现时的位置索引值。
【功能介绍】取集合中的不重复元素或不重复行。
【实例】判断向量是否包含重复元素,判断细胞数组是否包含重复字符串。
>> a=1:100; % 构造向量a
>> a(34)=25; % 向量a包含两个25
>> isequal(unique(a),a)% unique(a)去掉了一个 25,与 a不相等
ans =
0
>> a={'abc', 'xyz', 'MATLAB', 'xyz'}; % 细胞数组a
>> isequal(unique(a),a) % a中包含两个"xyz"
ans =
0
>> unique(a) % unique(a)去掉了一个"xyz"
ans =
'MATLAB' 'abc' 'xyz'
【实例讲解】可以用isequal(unique(a),a)的形式判断a是否包含重复元素。