我试图在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)];
但是,我希望索引保持原样,不需要排序。
答案 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);