0

假设我有一个向量 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)。实际向量要大得多,所以我宁愿需要一个通用解决方案,最好避免循环。有任何想法吗?提前致谢

4

2 回答 2

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
于 2012-11-15T16:05:06.680 回答
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))
于 2012-11-15T16:15:33.110 回答