簡単な解決策があるはずだと思いますが、見つかりません:
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.
)。
2次元インデックスを使用する方法は本当にありませんか?
ご協力いただきありがとうございます!