2013-05-13 62 views
0

我有幾個m文件,這些文件基本上是包含很長時間的複雜方程,它們在期刊論文中佔用了多條線。目前,他們使用矩陣運算符,即*/,^。我想將它們轉換爲數組運算符,即.*,./,.^,這樣我就可以將我對它們進行的計算進行向量化。數組和矩陣運算符之間是否存在性能差異?

我的問題是,是否有任何理由不能簡單地做一個搜索並替換所有的操作符?將標量乘以元素明智的運算符是否存在性能問題?

+1

如果你只是做一個搜索和替換,你怎麼能確定這些方程中的一些不是*已經*在矩陣上運行? – wakjah 2013-05-13 22:43:01

+0

爲什麼你不這樣做,看看它是否給你想要的結果。如果你擔心它會影響性能(我非常懷疑),然後使用'tic'和'toc'或者'timeit'做一個小測試。 – Dan 2013-05-13 23:31:22

+0

如果你的目標是矢量化表達式,那麼提供一個最小工作示例我們可以測試以提供矢量化解決方案。 – Oleg 2013-05-14 08:56:56

回答

3

我會說這不是一個表現的問題。

如果你正在處理線性代數表情,那麼你肯定不想只搜索&替換:假設A = [1; 2; 3]和,你有A'*B,那麼你不能轉換爲A'.*B因爲尺寸不相符元素明智的產品(它會出錯)。

標量乘法的情況下,我認爲JIT是足夠聰明,認爲等同1*21.*2和相同的解釋它們。

+0

最後一行真的是我正在尋找(並找不到)。我不確定MATLAB在處理開銷方面是否按照標量處理這兩個運算符。 – craigim 2013-05-15 14:38:56

相關問題