この式をどうにか最適化できますか? [((ものW(Nx2のダブルMATLABで行列乗算を最適化する方法は?
合計 - 私はそれを何回も評価し、それが...
w
多くの時間を要する - N×N個の二重
x
- ダブル
phis
をの1xNを* phis、2)
この式をどうにか最適化できますか? [((ものW(Nx2のダブルMATLABで行列乗算を最適化する方法は?
合計 - 私はそれを何回も評価し、それが...
w
多くの時間を要する - N×N個の二重
x
- ダブル
phis
をの1xNを* phis、2)
の各行のスカラー積を取っていますとw
。これは線形代数を使って簡単に行うことができます。
out = phis * w';
このmatrix multiplicationはあなたのコードをしなければならないsum
、ones
、およびsize
にたくさんより速く呼び出す節約できます。さらに、線形代数演算は、プログラムが歴史的に最適化されているので、Matlabでは非常に高速なことがよくあります。
私は、これが正しく動作するとは思わない。私はwをphapのサイズに再マッピングし、各行の合計を計算する必要があります。 – Yekver
@Yekver:行列とベクトルの間の[スカラー製品](http://en.wikipedia.org/wiki/Scalar_product)は、正確には "リマップwをサイズそれらの和を計算する」と述べている。そして、MATLABでは、スカラー製品は他のJonasがあなたに示したものと同じくらい簡単です。 –
@Jonas:あなたのサイトにhttp://www.mathworks.com/help/techdoc/ref/arithmeticoperators.htmlへのリンクを追加する方法回答?質問タイトルは「行列の乗算」と言い、ヘルプページには行列の乗算が「*」であることが説明されています。 –
xとは何ですか?あなたのコード – carlosdc
でもN、x、w、phisのどれが呼び出しごとに変わるのですか? –
Matlab ** IS **は行列の乗算に最適化されています - これが名前の "Mat"部分の略です!したがって、 '* .'、' sum'と他のすべてのものを使って再作成するのではなく、以下の他のJonasで示されているように行列乗算 '*'を使うならば、もっと素早くなるはずです;-) –