[問題] 怎麼讓迴圈的執行速度最佳化?已回收

看板MATLAB作者 (垣圻 <( ̄︶ ̄)>)時間14年前 (2010/07/23 17:05), 編輯推噓3(306)
留言9則, 5人參與, 最新討論串1/2 (看更多)
最近MATLAB做模擬遇到瓶頸, 只要i超過120, 按[Run]之後, 就會一直呈現busy狀態, 以下是程式碼的一部份。 是不是從if的部份要修改,讓程式執行更快? for i=1:100 W=W+mu*Xprime*e; x=y1+e; % reference signal input(i)=x; imf=emd(input); [p,q]=size(imf); imf{1}=0; if q==1 out=imf{1}; else if q==2 out=imf{1}+imf{2}; else if q==3 out=imf{1}+imf{2}+imf{3}; else if q>3 out=imf{1}+imf{2}+imf{3}+imf{4}; end end end end ..... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.32.101

07/23 17:24, , 1F
先用profile看一下吧
07/23 17:24, 1F

07/23 17:55, , 2F
請問可以簡單解釋一下每一行嗎
07/23 17:55, 2F

07/23 17:56, , 3F
每個i都有產生一個out但是不分別存有點奇怪
07/23 17:56, 3F

07/23 17:59, , 4F
一些變數向量可以考慮preallocate
07/23 17:59, 4F

07/23 18:01, , 5F
第二行如果都是一樣的x就不用每一次都算 可以拿出for loop
07/23 18:01, 5F

07/24 00:27, , 6F
你的emd是最原始的emd還是eemd? (ensemble EMD)
07/24 00:27, 6F

07/24 00:30, , 7F
然後emd(input)的寫法有點奇怪,你的input是100條時間序列嗎
07/24 00:30, 7F

07/24 13:39, , 8F
看起來你自己寫得都還好...應該是慢在emd 這就沒辦法了
07/24 13:39, 8F

10/27 13:22, , 9F
問題在EMD吧?如果是用法國人寫的那個,記得改停止準則
10/27 13:22, 9F
文章代碼(AID): #1CILj34y (MATLAB)
文章代碼(AID): #1CILj34y (MATLAB)