我有一个 vector a=[1 2 3 1 4 2 5]'
我正在尝试创建一个新的 vector ,该 vector 将为每一行提供a中元素的出现次数。例如,使用此矩阵,结果将为[1 1 1 2 1 2 1]':第四个元素为2,因为这是第一次重复1。

我能看到的唯一方法是创建一个零 vector ,该 vector 的行数将是唯一元素的数目(此处为:c = [0 0 0 0 0],因为我有5个元素)。
我还创建了一个长度为a的零 vector d。然后,遍历 vector a,在要读取其元素的c行中添加一个,并在d的当前行中添加相应的c数。

谁能想到更好的东西?

最佳答案

这是一个很好的方法

C=sum(triu(bsxfun(@eq,a,a.')))

我的第一个建议是,这不是一个很好的for循环
for i=1:length(a)
    F(i)=sum(a(1:i)==a(i));
end

关于matlab - 出现次数的向量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19695619/

10-09 07:25
查看更多