我在维度A
的Matlab中有矩阵hxk
,维度B
的矩阵yxk
。我想构建一个维度C
的向量yx1
列在每行j
B(j,:)
A
中出现的次数{{1}}。
答案 0 :(得分:9)
如果您正在寻找完美匹配,请使用bsxfun
-
C = squeeze(sum(all(bsxfun(@eq,A,permute(B,[3 2 1])),2),1))
答案 1 :(得分:3)
您也可以使用pdist2
(来自统计工具箱):
C = sum(pdist2(A, B)==0);
答案 2 :(得分:2)
使用ismember
和accumarray
A=[1 2 3; 4 5 6; 7 8 9; 1 2 3; 4 5 6; 10 11 12; 7 8 9];
B=[1 2 3; 10 11 12; 3 4 5; 7 8 9];
[uB,aB,cB]=unique(B,'rows');
[~,LocB] = ismember(A,uB,'rows');
C = accumarray(nonzeros(LocB),1,[size(B,1),1]);
C=C(cB);
返回
C =
2 1 0 2
或者一些疯狂的编码,对于大多数情况来说似乎更快:
[u,v,w]=unique([B;A],'rows');
wB=w(1:size(B,1));
wA=w(size(B,1)+1:end);
C=accumarray(wA,1,[numel(v),1]);
C=C(wB);