[問題]對矩陣每個元素取次方的計算速度已回收

看板MATLAB作者 (凡人昱)時間16年前 (2009/04/11 21:37), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/3 (看更多)
有個關於計算速度的問題想請教 我有一個大型的三維矩陣A 要計算A矩陣內每個元素乘b次方的結果(b是一個常數) 對計算速度不太滿意 自己對這種運算做了一點測試 假設b=4 寫為A.^4計算,時間約為0.036秒 但若寫為(A.^2).^2計算,時間約為0.0054秒(速度差了六倍多) 假設b=3 寫為A.^3計算,時間約為0.036秒 若寫為A.*A.*A,時間約為0.0062秒(也差了將近六倍) 想請問各位的經驗裡這種A.^b的計算 怎樣寫效率較好呢? 如果b是一個帶小數的常數,也有方法可以加速嗎 雖然感覺像是一般人不太會在意的問題@@ 但是次數一多跑起效率也差滿多的 所以還是來請教 請大家給點建議 感謝了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.40.64.170

04/11 22:34, , 1F
以寫程式的概念來說,可以用*,就不要用^
04/11 22:34, 1F

04/11 22:35, , 2F
可以用+,就不要用*,牽涉到內部運算的問題
04/11 22:35, 2F

04/12 01:10, , 3F
1. ^2 跟^3以上使用的演算法可能不同
04/12 01:10, 3F

04/12 01:10, , 4F
2. 可以是short 的不要變成long
04/12 01:10, 4F

04/12 01:37, , 5F
可是我測出來的結果.^100的速度遠遠快於(.^10).^10
04/12 01:37, 5F

04/12 01:37, , 6F
我用ones(1000*1000)下去做的
04/12 01:37, 6F

04/12 04:50, , 7F
殘念...用asm實做ieee754算術運算就會發現問題之所在
04/12 04:50, 7F
文章代碼(AID): #19u9qgEh (MATLAB)
文章代碼(AID): #19u9qgEh (MATLAB)