我希望对大型逻辑向量进行逐元素二进制操作。这些向量的内容主要是false,为了性能考虑最好使用稀疏矩阵进行操作。然而,如果这样做,得到的矩阵是不正确的。
示例
A = logical([0;1;0;0]);
B = logical([0 0 1 1]);
C = bsxfun(@and,A,B)
在这种情况下,C代表
C =
0 0 0 0
0 0 1 1
0 0 0 0
0 0 0 0
如果我使用稀疏矩阵,C就是...
C = full(bsxfun(@and,sparse(A),sparse(B)))
C =
0 0 0 0
1 1 1 1
0 0 0 0
0 0 0 0
显然是错误的。我是否忽略了某些东西或者这是Matlab的一个bug?
C = full(bsxfun(@and,double(sparse(A)),double(sparse(B))))
也可以工作。-- 谢谢你提供 ndgrid 的提示,我之前不知道这个函数。 - Tobias Heßmeshgrid
。 - Nzbuu