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
参考技术A a=[5,2,3,4,1,1,2,3];% unique(A,'rows',setOrder)函数去除矩阵中重复行;
% A = [4 5 6;1 2 3;1 2 3];
% setOrder = 'sorted'是表示去掉重复值后排序后输出,为默认操作;
% setOrder = 'stable'是表示去掉重复值后按原来的顺序输出;
% 以上是对于矩阵的操作,对向量的操作只要将‘rows’去掉即可
即unique(a,'stable')
[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函数的主要内容,如果未能解决你的问题,请参考以下文章