我有幾個m文件,這些文件基本上是包含很長時間的複雜方程,它們在期刊論文中佔用了多條線。目前,他們使用矩陣運算符,即*
,/
,^
。我想將它們轉換爲數組運算符,即.*
,./
,.^
,這樣我就可以將我對它們進行的計算進行向量化。數組和矩陣運算符之間是否存在性能差異?
我的問題是,是否有任何理由不能簡單地做一個搜索並替換所有的操作符?將標量乘以元素明智的運算符是否存在性能問題?
我有幾個m文件,這些文件基本上是包含很長時間的複雜方程,它們在期刊論文中佔用了多條線。目前,他們使用矩陣運算符,即*
,/
,^
。我想將它們轉換爲數組運算符,即.*
,./
,.^
,這樣我就可以將我對它們進行的計算進行向量化。數組和矩陣運算符之間是否存在性能差異?
我的問題是,是否有任何理由不能簡單地做一個搜索並替換所有的操作符?將標量乘以元素明智的運算符是否存在性能問題?
我會說這不是一個表現的問題。
如果你正在處理線性代數表情,那麼你肯定不想只搜索&替換:假設A = [1; 2; 3]
和,你有A'*B
,那麼你不能轉換爲A'.*B
因爲尺寸不相符元素明智的產品(它會出錯)。
在標量乘法的情況下,我認爲JIT是足夠聰明,認爲等同1*2
和1.*2
和相同的解釋它們。
最後一行真的是我正在尋找(並找不到)。我不確定MATLAB在處理開銷方面是否按照標量處理這兩個運算符。 – craigim 2013-05-15 14:38:56
如果你只是做一個搜索和替換,你怎麼能確定這些方程中的一些不是*已經*在矩陣上運行? – wakjah 2013-05-13 22:43:01
爲什麼你不這樣做,看看它是否給你想要的結果。如果你擔心它會影響性能(我非常懷疑),然後使用'tic'和'toc'或者'timeit'做一個小測試。 – Dan 2013-05-13 23:31:22
如果你的目標是矢量化表達式,那麼提供一個最小工作示例我們可以測試以提供矢量化解決方案。 – Oleg 2013-05-14 08:56:56