vsunl 发表于 2008-11-2 20:18

求助非线性函数编写仿真

我刚学MATLAB,有个问题:
想用M 函数编写一个非线性函数(分段函数),然后在SIMULINK中调用组成模块,在SIMULINK中给信号y,u,和其他参数设定,想问下怎样才能使两者联系起来,直接用模块MATLAB Fcn吗?我编写了一段但是运行错误,说是y没定义,请高手指教啊
function f=fal(y,u,a,d)
         e=y-u
if abs(e)<=d
    f=e*d^(a-1);
else
    f=(abs(e))^a*sign(e);
end

ch_j1985 发表于 2008-11-2 21:46

回复 楼主 vsunl 的帖子

有没有输入信号y?

vsunl 发表于 2008-11-3 15:02

回复 沙发 ch_j1985 的帖子

y和u,还有其他的参数都从simulink中输入,我只想利用M函数来实现这个算法,然后可以通过命令启动仿真,输出数据和画图,就是这个想法,请继续指教,谢谢!

xianfa110 发表于 2008-11-4 00:13

Simulink中函数的输入没搭对!

yufeng 发表于 2008-11-4 09:14

我编写了一段但是运行错误,说是y没定义,请高手指教啊
?
是不是直接运行了你这个函数文件? 那样的话肯定没有定义y

vsunl 发表于 2008-11-4 19:44

回复 5楼 yufeng 的帖子

是的,我写完函数先run ,就发现错误提示没有定义y,这样不对吗?那正确的做法应该怎样,谢谢

xianfa110 发表于 2008-11-5 00:16

应采用这种方式:
function f=fal(U)
y=U(1);
u=U(2);
a=U(3);
d=U(4);
e=y-u;
if abs(e)<=d
    f=e*d^(a-1);
else
    f=(abs(e))^a*sign(e);
end

vsunl 发表于 2008-11-5 20:11

回复 7楼 xianfa110 的帖子

谢谢!
在高手的帮助下终于解决了,:handshake

wusonghua618 发表于 2010-11-14 22:46

本帖最后由 wusonghua618 于 2010-11-14 22:46 编辑

我觉得MATLAB fcn 函数不能实现fal函数的功能。我现在在做扩张状态观测器,想请教你一下怎么解决的,我q232082290 ,谢谢。
页: [1]
查看完整版本: 求助非线性函数编写仿真