2011-08-11 16 views
0

この式をどうにか最適化できますか? [((ものW(Nx2のダブルMATLABで行列乗算を最適化する方法は?

合計 - 私はそれを何回も評価し、それが...

w多くの時間を要する - N×N個の二重

x - ダブル

phisをの1xNを* phis、2)

+0

xとは何ですか?あなたのコード – carlosdc

+0

でもN、x、w、phisのどれが呼び出しごとに変わるのですか? –

+1

Matlab ** IS **は行列の乗算に最適化されています - これが名前の "Mat"部分の略です!したがって、 '* .'、' sum'と他のすべてのものを使って再作成するのではなく、以下の他のJonasで示されているように行列乗算 '*'を使うならば、もっと素早くなるはずです;-) –

答えて

5

の各行のスカラー積を取っていますとw。これは線形代数を使って簡単に行うことができます。

out = phis * w'; 

このmatrix multiplicationはあなたのコードをしなければならないsumones、およびsizeにたくさんより速く呼び出す節約できます。さらに、線形代数演算は、プログラムが歴史的に最適化されているので、Matlabでは非常に高速なことがよくあります。

+0

私は、これが正しく動作するとは思わない。私はwをphapのサイズに再マッピングし、各行の合計を計算する必要があります。 – Yekver

+0

@Yekver:行列とベクトルの間の[スカラー製品](http://en.wikipedia.org/wiki/Scalar_product)は、正確には "リマップwをサイズそれらの和を計算する」と述べている。そして、MATLABでは、スカラー製品は他のJonasがあなたに示したものと同じくらい簡単です。 –

+0

@Jonas:あなたのサイトにhttp://www.mathworks.com/help/techdoc/ref/arithmeticoperators.htmlへのリンクを追加する方法回答?質問タイトルは「行列の乗算」と言い、ヘルプページには行列の乗算が「*」であることが説明されています。 –