回 帖 发 新 帖 刷新版面

主题:请教高人一个有关s-function的问题!!谢谢

在simulink里,我想[color=0000FF]用s-function实现在线求函数最小值的问题。输入u由simulink模块给。[/color]
求y=(x-u)^2的在每个采样时间的最小值。输出为此最小值所对应的x值。

求最小值用的是: x = fminbnd(myfun,x1,x2)命令。
(myfun为自己另外建立的目标函数。x1,x2为求最小值的条件范围)

可是运行这个模块,他总说:Undefined function or variable 'u'.
就是输入量u在myfun函数里不认。

程序大致如下:
%%%%%%%%%%%%%%%%%%%%%%%
function [sys,x0,str,ts] = wudi(t,x,u,flag)
switch flag,
case 0 
...
[color=FF0000]function sys = mdlOutputs(t,x,u)
sys=fminbnd(@myfun,-10,10);[/color]...
%%%%%%%%%%%%%%%%%%%%%%%%
然后自己定义一个myfun:
[color=0000FF]function f = myfun(x) 
f=(x+u).^2;[/color]%%%%%%%%%%%%%%%%%%%%%%%

myfun函数里就是不认这个输入u(去掉u可以)。如何定义u,才能让u能够在这个调用的函数里也能用阿??
谢谢各位高人指点!

回复列表 (共2个回复)

沙发

global u  试试看

板凳

谢谢楼上。但试过了.不行。
在s-function和那个自定义的函数里加了global u后,u将固定在一个值,永远不变了..但我的u是个随时间变化的值。
我想除非在先把simulink里的输入模块给变成全局的...
求救阿...

我来回复

您尚未登录,请登录后再回复。点此登录或注册