[問題] matlab運作原理已回收

看板MATLAB作者 (我愛阿蓉)時間15年前 (2009/08/04 00:43), 編輯推噓3(306)
留言9則, 6人參與, 最新討論串1/1
今天寫matlab程式發現怎麼執行的這麼緩慢 我今天這樣寫 img=[]; for i=1:256 img(i)=i; 類似這種寫法 如果256還算小 如果是256*256 就會異常的緩慢 是不是matlab在每次執行img(i)=i時 都會類似C 的realloc那樣 重新配置大小給img呢? 因為我改成 img=zeros(1,256*256) 再跑回圈 明顯快超多 對matlab不是很了解 請教各位謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.207.187 ※ 編輯: QQ29 來自: 140.113.207.187 (08/04 00:57)

08/04 01:06, , 1F
是啊...有初始化的話一開始就會要求空間...
08/04 01:06, 1F

08/04 01:06, , 2F
反之,就是插入新資料的時候看空間夠不夠,不夠才要求
08/04 01:06, 2F

08/04 13:51, , 3F
D大的意思是說 有先給空間的話運算速度會比較快嗎?
08/04 13:51, 3F

08/04 13:54, , 4F
matlab的橘燈都會這樣建議
08/04 13:54, 4F

08/04 14:29, , 5F
如果可以甚至少用迴圈,全面向量化速度也會快不少~
08/04 14:29, 5F

08/04 14:30, , 6F
但後續的維護我個人覺得很困難,程式碼變得比較難看~
08/04 14:30, 6F

08/04 14:51, , 7F
可以變成矩陣運算的話可以快很多
08/04 14:51, 7F

08/04 15:36, , 8F
直譯式語言對迴圈式的記憶體處理有其效能限制所以
08/04 15:36, 8F

08/04 15:37, , 9F
大部分發展出類似for each的語法 以增加效率
08/04 15:37, 9F
文章代碼(AID): #1ATnEeVS (MATLAB)