作者ejialan (eji)
看板MATLAB
标题Re: [讨论] 如何在m档在执行时使用INPUT改变函数档?
时间Mon Nov 18 14:41:13 2013
※ 引述《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
1F:推 billy00685:成功解决了0.0 ~原来呼叫的时候还有这种写法_感谢 11/18 16:50