Octave で行列積の対角線のみを計算して保存する方法はありますか?
基本的には次のようにします:vector = diag(A*B);
A*B
対角線以外の値は気にしません。マトリックスのサイズは約80k x 12
と12 x 80k
であるため、速度/追加メモリを気にしなくても、単に RAM に収まりません。
奇妙なことに、Octave は巨大なデータ セットのパッケージであり、対角線が非常に重要であるため、可能なはずです。
Octave で行列積の対角線のみを計算して保存する方法はありますか?
基本的には次のようにします:vector = diag(A*B);
A*B
対角線以外の値は気にしません。マトリックスのサイズは約80k x 12
と12 x 80k
であるため、速度/追加メモリを気にしなくても、単に RAM に収まりません。
奇妙なことに、Octave は巨大なデータ セットのパッケージであり、対角線が非常に重要であるため、可能なはずです。
対角の最初の要素は、A の最初の行と B の最初の列のスカラー積です。対角の 2 番目の要素は、A の 2 番目の行と B の 2 列目のスカラー積です。
言い換えると:
vector = sum(A.*B',2);
これは、MATLAB で行う方法です (おそらく Octave 構文に似ています)。
vector = sum(A.*B',2);
これは、演算の結果の対角線のみをA*B
列ベクトルとして計算しますvector
。
実際には、A の最初の行と B の最初の列の内積だと思います... 2 番目の対角要素は、2 行目と 2 番目の列の内積です...など