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')


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

b就是你想要的。

如果是2010b之前的版本,把其中的波浪线换成变量,之后再删除就可以了。本回答被网友采纳
第3个回答  2015-05-15
unique函数——取集合的单值元素
用法:
b=unique(a),取集合a的不重复元素构成的向量。
b=unique(A,'rows'),返回A、B不同行元素组成的矩阵。
[b,i,j]=unique(。。。),i,j]体现b中元素在原向量(矩阵)中的位置。
第4个回答  2012-07-12
这个好像不可以
相似回答