4

簡単な解決策があるはずだと思いますが、見つかりません:

A B同じ次元の疎行列がありn*nます。ゼロ以外の値をCコピーするマトリックスを作成したいと思います。AB

これが私のアプローチです:

[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次元インデックスを使用する方法は本当にありませんか?

ご協力いただきありがとうございます!

4

1 に答える 1