推 sunev: 這裡xy和a剛好可以拆開,所以 12/20 07:50
→ sunev: atot=bsxfun(@plus,X(:)+Y(:).^2,(ini(:,1)+ini(:,2).^2)') 12/20 07:51
→ sunev: atot=reshape(sin(atot),[m*n k]); 12/20 07:52
推 sunev: 另外我印象中arrayfun沒有比for-loop快,你可以check一下 12/20 07:58
→ Absolitude: 原來可以用(:),我要算的有交叉項,不過剛剛弄出來了 12/20 22:11
→ Absolitude: 感恩!! 12/20 22:12
→ Absolitude: 晚點再看看FOR的 12/20 22:12
推 sunev: 真要快還是得用C,不然就是用gpu 12/22 16:13
推 profyang: 2016b以後的matlab不用bsxfun也可以做到2F的事情了 12/22 20:02
→ profyang: 直接X(:)+Y(:).^2+(ini(:,1)+ini(:,2).^2)'應該就可以 12/22 20:03
→ Absolitude: 對程式語言的本質不瞭解 C真的一定比MATLAB快嗎 12/24 01:31
→ Absolitude: P大感恩,不過我目前的版本沒那麼新 12/24 02:19
→ LiamIssac: 如果要跟文獻拼速度可能需要計較(在同一個環境下) 但如 12/24 15:06
→ LiamIssac: 果只是要結果 時間基本不會差到哪(order of 1) 就看程 12/24 15:06
→ LiamIssac: 式的寫法 那些arrayfun背後也都是迴圈寫成的 只是經過 12/24 15:06
→ LiamIssac: 優化而已 12/24 15:06
→ LiamIssac: 可以到mathworks的論壇去看看 很多高手在那討論 12/24 15:07
推 profyang: 用bsxfun的話應該不會比C慢 12/24 18:23