计算向量的共现

时间:2014-12-08 13:22:12

标签: matlab vector

我试图在Matlab中计算向量中某些值的共现。我使用以下代码来执行此操作:

x = graph(:,1);
y = zeros(size(x));
for i = 1:length(x)
   y(i) = sum(x==x(i));
end

上面的代码计算向量内每个索引的共现。我希望得到唯一索引的共同出现。我怎么能这样做?

我找到了以下实现:

a = unique(x);
out = [a,histc(x(:),a)];

但是,我希望索引保持原样,不需要排序。

1 个答案:

答案 0 :(得分:4)

让我们看看这是否是你需要的:

a=unique(x);
Coocurrence=zeros(length(a));

for ii=1:length(a)

    Coocurrence(ii)=sum(x==a(ii));

end

或矢量化解决方案

a=unique(x);
Coocurrence=sum(bsxfun(@eq,x,a'),2);