dywang 发表于 2008-1-12 22:23

如何在函数间进行变量传递

请教一个问题:我想要编写一个优化程序,设计变量为u=
初值为u0,上下限分别为lb,ub,
主程序为:
u0=;
lb=zeros(3,1);
ub=;
u=fmincon(@opt_T,u0,[],[],[],[],lb,ub)
函数opt_T.m如下,在运行过程中其又要调用名为four.m函数,
function function f=myfun(u)
。。
。。
。。
=ode45('four',,x0,options);

M=length(x(:,1));
for i=1000:M
MAX=max(MAX,x(i,2));
MIN=min(MIN,x(i,2));
end

f=abs(MAX-MIN)

函数four.m如下:
function dx=fourbar(t,x)
..
..
..
(我的设计变量出现在下面这个语句中:)
T_in=0.00568-u(1)*sin(u(2)*t+u(3));
..
..
..
dx=[x(2);
    A0*(A1*x(2)^2+T_in+T_aero-G-Spr)];

我想请问,我该如何在这几个函数中传递u的值,
我曾试过在opt_T.m和four.m中将u设为全局变量,可是u的值在完成第一次优化之后就不再发生变化,如果不对变量u进行说明,主程序在调用opt_T.m时找不到变量u又会报错,我对函数调用没有弄明白,哪位师兄师姐能给我指点一下,本人将不胜感激!

eight 发表于 2008-1-12 22:56


函数opt_T.m如下,在运行过程中其又要调用名为four.m函数,
function function f=myfun(u)


函数名必须与文件名相同。four.m 也是一样

建议多阅读基础书

dywang 发表于 2008-1-13 09:51

谢谢

谢谢管理员提醒,文件名和函数名不一致是我的疏忽,可我改过来之后还是不行
页: [1]
查看完整版本: 如何在函数间进行变量传递