我想在10
元素的向量中找到n
个重复元素,
(元素来自1-100
)
有谁知道怎么做?
我知道如何在向量中找到最重复的元素,但我不知道如何找到10个最重复的元素n
未知。
答案 0 :(得分:5)
a = randi(10,1,100);
y = hist(a,1:max(a));
[~,ind] = sort(y,'descend');
out = ind(1:10);
出现次数使用y(ind(1:10))
。
我有些疑惑,所以我多次测试,似乎有效。
答案 1 :(得分:2)
您可以针对该案例使用unique
。在我的例子中,我有4个数字,我想要以最多的出现次数获得2。
A = [1 1 3 3 1 1 2 2 1 1 1 2 3 3 3 4 4 4 4];
B = sort(A); % Required for the usage of unique below
[~,i1] = unique(B,'first');
[val,i2] = unique(B,'last');
[~,pos] = sort(i2-i1,'descend');
val(pos(1:2))
1 3
在您的情况下将val(pos(1:2))
替换为val(pos(1:10))
以获得最多10个值。获取可以使用i1
和i2
的元素数量。
num = i2-i1+1;
num(1:2)
ans =
7 3
答案 2 :(得分:0)
由于您已经知道如何找到最重复的元素,因此可以使用以下算法:
代码看起来像:
count = 0;
values = [];
while count < 10
r = Mode(Vector);
values = [values r]; % store most repeated values
Vector = Vector(find(Vector~=r));
count = count + 1;
end
效率不高,但它可以完成工作