我有一个向量 A=[2,5,6,2,4,13,34,3,34]。我想找到这个向量的唯一值,但不是按排序顺序!我在 Matlab 网站上搜索,发现了这个函数

[C, ia, ic] = unique(A,'rows','stable')

但此功能在 Matlab R2011a 中无法识别!可能此功能适用于高于 2011 的版本!!任何人都知道如何以与 A 中相同的顺序找到 A 的唯一值,例如:
A=[2,5,6,4,13,34,3]

最佳答案

假设你有一个向量(所以 'rows' 版本没有意义),这里有一个基于 bsxfun 的解决方案:

[~, ind] = max(bsxfun(@eq, A, A.'));
ind = ind(ind>=1:numel(ind));
C = A(ind);

工作原理:在元素之间进行所有成对比较( bsxfun(@eq, A, A.') )。对于每个元素,找到第一个相等元素 ( [~, ind]=max(...) ) 的索引。如果该索引小于当前位置(即,如果存在与当前元素相等的前一个元素),则忽略它( ind = ind(ind>=... )。使用幸存的索引生成结果 ( C = A(ind) )。

关于matlab - 查找与 matlab 中的向量具有相同顺序的向量的唯一值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28648439/

10-12 18:59