matlab unique 的用功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab unique 的用功能相关的知识,希望对你有一定的参考价值。

  格式
b = unique (a) %取集合a的不重复元素构成的向量
b = unique (A,'rows') %返回A 值不同的行组成的矩阵
[b,i,j] = unique (…) %i体现b中元素在原向量(矩阵a)中的位置;j体现原向量(矩阵a)在b中的位置
例1-39
>> A=[1 1 2 2 4 4 6 4 6]
A =
1 1 2 2 4 4 6 4 6
>> [c,i,j]=unique(A)
c =
1 2 4 6
i =
2 4 8 9 %i体现b中元素在原向量(矩阵a)中的位置;
j =
1 1 2 2 3 3 4 3 4 %j体现原向量(矩阵a)在b中的位置


>> A=[1 2 2 4;1 1 4 6;1 1 4 6]
A =
1 2 2 4
1 1 4 6
1 1 4 6
>> [c,i,j]=unique(A,'rows')
c =
1 1 4 6
1 2 2 4
i =
3
1
j =
2
参考技术A 这个函数用来把一个数组中的相同元素去掉!本回答被提问者采纳 参考技术B 找出,相同元素

matlab问题,关于unique函数

举例:a=[5,2,3,4,1,1,2,3]; 使用unique函数之后得到的是[1,2,3,4,5]。如何可以使a=[5,2,3,4,1]? 即不改变原来矩阵元素的顺序,只删除后面的重复元素?
不用unique函数,用其它方法也可以,只要达到目的就行!请大侠们赐教!

>> a=[5,2,3,4,1,1,2,3];

>> unique(a,'stable')

ans =

     5     2     3     4     1

% unique(A,'rows',setOrder)函数去除矩阵中重复行;

% A = [4 5 6;1 2 3;1 2 3];

% setOrder = 'sorted'是表示去掉重复值后排序后输出,为默认操作;

% setOrder = 'stable'是表示去掉重复值后按原来的顺序输出;

%  以上是对于矩阵的操作,对向量的操作只要将‘rows’去掉即可

即unique(a,'stable')


参考技术A a=[5,2,3,4,1,1,2,3];
[b,m]=unique(a,'first');%矩阵m记录矩阵b中各元素在矩阵a中第一次出现的序号
c=a(sort(m))%对矩阵m作升序排列,取出矩阵a中对应元素即为所求本回答被提问者采纳
参考技术B 这样做 结合几个东西。我现在给你写的这个代码仅适用于2010b以后的matlab版本
[b, seqA, ~] = unique(a, 'first');
[~, reSeqA] = sort(seqA));
b = b(reSeqA);

b就是你想要的。

如果是2010b之前的版本,把其中的波浪线换成变量,之后再删除就可以了。
参考技术C unique函数——取集合的单值元素
用法:
b=unique(a),取集合a的不重复元素构成的向量。
b=unique(A,'rows'),返回A、B不同行元素组成的矩阵。
[b,i,j]=unique(。。。),i,j]体现b中元素在原向量(矩阵)中的位置。
参考技术D 这个好像不可以

以上是关于matlab unique 的用功能的主要内容,如果未能解决你的问题,请参考以下文章

matlab问题,关于unique函数

MATLAB 的unique函数——数组矩阵的唯一值

matlab如何让数组每个元素重复出现?

matlab中为啥用unique数组去掉重复元素后,还有相同的元素

csharp 灵感来自Heather Floyd的文章(http://24days.in/umbraco-cms/2016/unique-sites-using-theming),但是我们的用例略有不

matlab中某些函数的用法