声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 900|回复: 2

[编程技巧] 如何在函数间进行变量传递

[复制链接]
发表于 2008-1-12 22:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请教一个问题:我想要编写一个优化程序,设计变量为u=[u(1),u(2),u(3)]
初值为u0,上下限分别为lb,ub,
主程序为:
u0=[0.001;29;0];
lb=zeros(3,1);
ub=[0.005;2900;pi/2];
u=fmincon(@opt_T,u0,[],[],[],[],lb,ub)
函数opt_T.m如下,在运行过程中其又要调用名为four.m函数,
function function f=myfun(u)
。。
。。
。。
[t,x]=ode45('four',[0,tf],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又会报错,我对函数调用没有弄明白,哪位师兄师姐能给我指点一下,本人将不胜感激!
回复
分享到:

使用道具 举报

发表于 2008-1-12 22:56 | 显示全部楼层

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


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

建议多阅读基础书
 楼主| 发表于 2008-1-13 09:51 | 显示全部楼层

谢谢

谢谢管理员提醒,文件名和函数名不一致是我的疏忽,可我改过来之后还是不行
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-18 10:56 , Processed in 0.054873 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表