我觉得应该有一个简单的解决方案,但我找不到它:
我的稀疏矩阵A
B
具有相同的维度n*n
。我想创建矩阵C
,复制A
中B
非零的值。
这是我的方法:
[r,c,v] = find(B);
% now I'd like to create an array of values using indices r and c,
% but this doesn't work (wrong syntax)
v2 = A(r,c);
% This won't work either
idx = find(B); % linear indexing, too high-dimensional
v2 = A(idx);
% and create C
C = sparse(r,c,v2,n,n);
以下是一些更多细节:
C(B~=0) = B(B~=0);
不会这样做。Matrix is too large to return linear indices.
),线性索引不起作用。真的没有办法使用二维指数吗?
感谢您的帮助!
答案 0 :(得分:3)
我认为C = A .* (B~=0);
应该有效。在两个稀疏矩阵的逐次乘法中只能访问非零,因此速度很快。