声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2001|回复: 8

[综合讨论] 求助非线性函数编写仿真

[复制链接]
发表于 2008-11-2 20:18 | 显示全部楼层 |阅读模式

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

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

x
我刚学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
回复
分享到:

使用道具 举报

发表于 2008-11-2 21:46 | 显示全部楼层

回复 楼主 vsunl 的帖子

有没有输入信号y?
 楼主| 发表于 2008-11-3 15:02 | 显示全部楼层

回复 沙发 ch_j1985 的帖子

y和u,还有其他的参数都从simulink中输入,我只想利用M函数来实现这个算法,然后可以通过命令启动仿真,输出数据和画图,就是这个想法,请继续指教,谢谢!
发表于 2008-11-4 00:13 | 显示全部楼层
Simulink中函数的输入没搭对!
发表于 2008-11-4 09:14 | 显示全部楼层
我编写了一段但是运行错误,说是y没定义,请高手指教啊
?
是不是直接运行了你这个函数文件? 那样的话肯定没有定义y
 楼主| 发表于 2008-11-4 19:44 | 显示全部楼层

回复 5楼 yufeng 的帖子

是的,我写完函数先run ,就发现错误提示没有定义y,这样不对吗?那正确的做法应该怎样,谢谢
发表于 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
未命名.JPG

评分

1

查看全部评分

 楼主| 发表于 2008-11-5 20:11 | 显示全部楼层

回复 7楼 xianfa110 的帖子

谢谢!
在高手的帮助下终于解决了,:handshake
发表于 2010-11-14 22:46 | 显示全部楼层
本帖最后由 wusonghua618 于 2010-11-14 22:46 编辑

我觉得MATLAB fcn 函数不能实现fal函数的功能。我现在在做扩张状态观测器,想请教你一下怎么解决的,我q232082290 ,谢谢。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-14 07:46 , Processed in 0.072110 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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