生成包含固定数量唯一值的元素的向量

时间:2012-11-15 15:44:05

标签: matlab indexing unique sorting

假设我有一个向量 A =

 3     5     3     3     2     2     4     2     6

我需要生成一个新的向量B,它将包含来自开始向量A的所有这些值,这将导致n个元素的唯一数量(假设n = 3,就本例而言)。新的向量应该是B =

 3     5     3     3     2

因为直到矢量A的第五个元素,我们有3个唯一值(3,5,2)。 实际向量要大得多,所以我宁愿需要一个通用的解决方案,最好是避免循环。有任何想法吗?提前致谢

2 个答案:

答案 0 :(得分:4)

您可以使用unique解决此问题。但是,请务必使用'stable'选项。

A = [3     5     3     3     2     2     4     2     6]; 
n = 3; 

[x, id] = unique(A,'stable'); 

B = A(1:id(3))

这导致

B =

     3     5     3     3     2

答案 1 :(得分:2)

执行以下操作:

A = [3  5  3  3  2  2  4  2  6];
n = 3;

[b,i] = unique(A,'first');
h = sort(i);
A(1:h(n))