我觉得应该有一个简单的解决方案,但我找不到:
我有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.
),线性索引也不起作用。
真的没有办法使用二维索引吗?
谢谢你的帮助!