说A
和B
是 2 个向量,其中length(A) = length(B)
。A
和的所有元素B
都是0
或1
。如何在 1 行中计算两个向量都有值的位置数1
?
问问题
122 次
3 回答
3
只是为了添加到解决方案列表中,您还可以执行点积,这将为您提供答案:
C=A'*B; %'# here I've assumed A & B are both column vectors
这也是迄今为止发布的解决方案中最快的。
时序测试
A=round(rand(1e5,1));
B=round(rand(1e5,1));
点积
tic;for i=1:1e4;A'*B;end;toc %'SO formatting
Elapsed time is 0.621839 seconds.
nnz
tic;for i=1:1e4;nnz(A&B);end;toc
Elapsed time is 14.572747 seconds.
总和(bitand())
tic;for i=1:1e4;sum(bitand(A,B));end;toc
Elapsed time is 64.111025 seconds.
于 2011-04-19T22:15:29.710 回答
1
许多解决方案之一,使用nnz
而不是sum
查找非零元素的数量:
nnz(A&B)
于 2011-04-19T21:56:44.000 回答
0
这应该这样做:
sum(bitand(A, B))
于 2011-04-19T21:43:25.683 回答