matlab问题,关于unique函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中怎样计算一个矩阵中每个数的平方?

matlab unique 的用功能

matlab中某些函数的用法

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

关于使用 std::unique_lock 的说明