15

Octave で行列積の対角線のみを計算して保存する方法はありますか?

基本的には次のようにします:vector = diag(A*B);

A*B対角線以外の値は気にしません。マトリックスのサイズは約80k x 1212 x 80kであるため、速度/追加メモリを気にしなくても、単に RAM に収まりません。

奇妙なことに、Octave は巨大なデータ セットのパッケージであり、対角線が非常に重要であるため、可能なはずです。

4

3 に答える 3

22

対角の最初の要素は、A の最初の行と B の最初の列のスカラー積です。対角の 2 番目の要素は、A の 2 番目の行と B の 2 列目のスカラー積です。

言い換えると:

vector = sum(A.*B',2);
于 2010-02-20T04:43:56.393 に答える
11

これは、MATLAB で行う方法です (おそらく Octave 構文に似ています)。

vector = sum(A.*B',2);

これは、演算の結果の対角線のみをA*B列ベクトルとして計算しますvector

于 2010-02-20T04:44:54.847 に答える
0

実際には、A の最初の行と B の最初の列の内積だと思います... 2 番目の対角要素は、2 行目と 2 番目の列の内積です...など

于 2010-02-20T04:45:35.313 に答える