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