Я могу воспроизвести это, так что это определенно похоже на ошибку MATLAB. Особенно учитывая, что:
C = full(bsxfun(@times,sparse(A),sparse(B)))
C =
0 0 0 0
0 0 1 1
0 0 0 0
0 0 0 0
Итак, я бы доложил об этом в Mathworks.
Однако в данном конкретном случае я не могу не чувствовать, что bsxfun
с разреженными матрицами не будет наиболее эффективным. Учтите следующее:
A = sparse(logical([0;1;0;0]));
B = sparse(logical([0 0 1 1]));
C_bsxfun = bsxfun(@and,full(A),full(B));
[i j] = ndgrid(find(A), find(B));
C_sparse = sparse(i, j, true, numel(A), numel(B));
isequal(C_bsxfun, full(C_sparse))