[討論] 請教如何讓程式的運算加快已回收

看板MATLAB作者 (ASUS P735超正阿!!)時間14年前 (2011/10/21 15:33), 編輯推噓1(1016)
留言17則, 5人參與, 最新討論串1/5 (看更多)
請各位前輩幫我看一下我的程式,因為資料量有點大,所以跑起來很花時間, 請大家幫我看一下應該怎麼改可以快一點 % Dates是一個735000x1的矩陣 B=zeros(100000,length(Dates)); for a=1:100000 max_A=zeros(length(Dates),1); for b=1:length(Dates) if Dates(b)>=1 max_A(b)=max(Dates((b-a+1):b)); end end B(a,:)=max_A; end 謝謝!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.234.43

10/21 15:45, , 1F
把迴圈打掉
10/21 15:45, 1F

10/21 15:48, , 2F
可以說詳細一點嗎?
10/21 15:48, 2F

10/21 16:09, , 3F
再允許的情況下 盡量用陣列取代簡單的迴圈
10/21 16:09, 3F

10/21 16:14, , 4F
外層跑百億次回圈@@"
10/21 16:14, 4F

10/21 16:19, , 5F
我的問題應該是問:怎麼用矩陣來取代這個迴圈啊?
10/21 16:19, 5F

10/21 16:20, , 6F
Dates( "1" )>=1 <<應該寫錯了
10/21 16:20, 6F

10/21 16:21, , 7F
max_A(b)=0; << 不必要的動作
10/21 16:21, 7F

10/21 16:22, , 8F
有P幣嗎@@
10/21 16:22, 8F
※ 編輯: addstar 來自: 114.34.234.43 (10/21 16:23) ※ 編輯: addstar 來自: 114.34.234.43 (10/21 16:24)

10/21 16:25, , 9F
有P幣,不多~這樣還是沒有快多少,如何改成陣列計算阿?
10/21 16:25, 9F

10/21 16:25, , 10F
給我500P玩博弈幫你改~
10/21 16:25, 10F

10/21 16:30, , 11F
怎麼給?
10/21 16:30, 11F

10/21 16:32, , 12F
OK,我給你500P了,教教我吧!!
10/21 16:32, 12F

10/21 17:47, , 13F
你電腦真好,我第一行 zeros 就 out of memory 了。
10/21 17:47, 13F

10/21 17:51, , 14F
我算了一下,大概要 58800000 GB 的記憶體吧。
10/21 17:51, 14F

10/21 17:52, , 15F
這個已經不是有點大的程度了。
10/21 17:52, 15F

10/21 18:14, , 16F
你的b-a+1會造成負的index喔...
10/21 18:14, 16F
※ 編輯: addstar 來自: 114.34.234.43 (10/21 18:17)

10/21 18:17, , 17F
已更改,請幫忙看一下吧...
10/21 18:17, 17F
文章代碼(AID): #1EeI1FXO (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1EeI1FXO (MATLAB)