Re: [討論] 如何在m檔在執行時使用INPUT改變函數檔?

看板MATLAB作者 (eji)時間11年前 (2013/11/18 14:41), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《billy00685 (milano)》之銘言: : %函數檔如下: : function f = myfun3_11_3(x); : w = 0.000188763; : delta_P = 0.3*pp*0.0789; : f = w*x(1)^3*x(2)+(x(2)*delta_P); : ------------------------------------------ : %主程式如下: : clear all : clc : pp = input('輸入人數:'); : x0 = [0.1 1]; : lb = [0.1 1]; : ub = [3 999999]; : options = optimset('LargeScale','off'); : [x,total_cost,flag] = : fmincon(@myfun3_11_3,x0,[],[],[],[],lb,ub,@mycon3_11_3,options) : %副程式當中的pp我要每次執行主程式時都要重新設定所以 : 我想把它放到主程式中使用input指令,但是會發生 : 無法定義函數或變數pp的錯誤 : Undefined function or variable 'pp'. : %我在把"pp = input('輸入人數:');" : 它放到副程式中去跑主程式會發生一直重複教我輸入人數: : 如下: : 輸入人數:30 : 輸入人數:30 : . : . : . : . : 到底該如何把主程式的變數給函數檔用啊? 重點不在input 而是怎麼把值從主程式傳到副程式 副程式多加個輸入把參數丟進去就好 function f = myfun3_11_3(x,pp); w = 0.000188763; delta_P = 0.3*pp*0.0789; f = w*x(1)^3*x(2)+(x(2)*delta_P); 然後主程式呼叫當然也要多加個輸入 clear all clc pp = input('輸入人數:'); x0 = [0.1 1]; lb = [0.1 1]; ub = [3 999999]; options = optimset('LargeScale','off'); [x,total_cost,flag] =fmincon(@(x)... myfun3_11_3(x,pp),x0,[],[],[],[],lb,ub,@mycon3_11_3,options) 因為我沒有@mycon3_11_3 我設成[]測試是ok的 你可以測試看看 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.146.175

11/18 16:50, , 1F
成功解決了0.0 ~原來呼叫的時候還有這種寫法_感謝
11/18 16:50, 1F
文章代碼(AID): #1IYRQCjo (MATLAB)
文章代碼(AID): #1IYRQCjo (MATLAB)