IはA
一般mxn
行列であり、D
は対角行列であるmxm
形態A'A
又はA'DA
より一般的にいくつかの製品を計算する必要が転置。どちらもフルランクです。すなわちrank(A)=min(m,n)
。BLAS行列が乗算
私はあなたが相当な時間を節約することができることを知っています。そのような対称的な製品です:A'A
が対称であるとすれば、製品マトリックスの下側 - または上側 - 対角線部分を計算すればよい。すなわち、概ね大きな行列のための典型的なn^2
の半分である、計算するn(n+1)/2
エントリに追加します。
これは私が活用したい素晴らしいセービングである、と私は私がfor
ループ内で行列 - 行列乗算を実装することができます知っています。しかし、これまでのところ、私はそれをキャッシュとメモリ管理を最適化するので、私は、自分で書くことができます任意のfor
ループの実装よりもはるかに高速であるBLASを、使用しています。
効率的にBLASを使用してA'A
かさえA'DA
を計算する方法はありますか? ありがとう!
素晴らしいですね。ありがとう! – enanone