Re: [問題] 非線性規劃 主副程式變數使用問題已回收

看板MATLAB作者時間15年前 (2010/08/18 17:24), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串5/5 (看更多)
※ 引述《sindyddd ()》之銘言: : 謝謝h大的解說 : 恩 剛好就在昨天 再仔細看一次fmincon的說明 : 我把x0可以是矩陣看錯了 我看成x XD : 因此今天測試 將每做一次迴圈 都把x視為向量 再把每一次結果都存起來 : 一開始測試時 先用i=1 i=2 i=3(不做迴圈) 速度很慢 不過值正確 : 但現在我有好幾筆資料(假設K筆) 在副程式使用迴圈上還是會遇到問題 : 請問主副程式的迴圈關係是...(主副都有迴圈) : 主程式 i=1時 副迴圈從i=1:K 跑完將結果傳回主程式 最後得到解答嗎? : 可是我現在想要 主程式i=1時 副迴圈直接跑i=1就好 : 主程式i=2時 副迴圈直接跑i=2就好 : 用過global i 但是不對 : 也試過加入return 但也不對 只能在i=1時成立 i=2就出包了.... : 想請問要怎麼做? : 謝謝大家!! 先謝謝 waveken 與 hilosi 版友的解答 這幾天一直在測試 昨天算是誤打誤撞 弄出來= =(不過有些值有點誤差) 但是還是不太懂他為什麼會這樣 原本副程式 迴圈形式的限制 讓我一直弄不出來 試過先寫出如何計算i的程式 但是寫不出來... 說是誤打誤撞是因為 偶然看到logical這個指令 原本寫法: 主程式和副程式 都是一般寫法(迴圈形式) 修改後: 主程式在迴圈前加入golbal i 副程式則為: global i ce=[(1-x(1))*X_ck_BF(:,logical(i)+i-1)]; (因版面限制 只寫上部分) ^^^^^^^^^^^^^^ 查過logical(x)的函數 只要不是零的數它都傳回1 (是吧?!) 本來以為這樣執行 他會出現錯誤訊息 結果沒想到他居然一直在跑.... logical(i)可以執行可以理解 但是後面的i? 那代表這個情況 i並非沒有被定義的數了? 也因為這樣 讓我主程式跑i=1時 副程式也只跑i=1了 主程式跑i=2時 副程式也只跑i=2了 而且副程式不用寫成迴圈形式 .... 請問這樣寫是ok的嗎? 還是只是運氣好XD 因為有些值仍有誤差 不過總共34筆資料 跑到17筆 就掛掉了... 而且跑好久= =.... 請問有沒有別種指令 一樣能最佳化限制式為非線性與線性的指令 但速度可以快一點的? 或者有其他方法? 謝謝大家!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.126.147.48 ※ 編輯: sindyddd 來自: 140.126.147.48 (08/18 17:26)

08/18 21:21, , 1F
logical(i)-1 = 0, 所以 再檢查你主副程式有沒有問題吧
08/18 21:21, 1F

08/18 23:19, , 2F
我那裡原本就是i 只是之前加入glabil i無法跑 現在做個小
08/18 23:19, 2F

08/18 23:20, , 3F
變化卻能跑了 照理說 i應該會被抓出來 所以覺得奇怪
08/18 23:20, 3F
文章代碼(AID): #1CQwR7Jc (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1CQwR7Jc (MATLAB)