声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1986|回复: 5

求助:自抗绕控制器中扩张状态观测器S-函数编写

[复制链接]
发表于 2006-8-24 16:17 | 显示全部楼层 |阅读模式

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

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

x
扩张状态观测器S-函数:
  function [sys,x0,str,ts]=han_eso(t,x,u,flag,a2,d,bet,b,T)
switch flag,
    case 0
      [sys,x0,str,ts]=mdlInitializeSizes;
    case 2
        sys=mdlUpdates(x,u,d,bet,b,T);
    case 3
        sys=mdlOutputs(x);
    case {1,4,9}
        sys=[];
    otherwise
        error(['Unhandled flag=',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes=simsizes;
sizes.NumContStates=0;
sizes.NumDiscStates=3;
sizes.NumOutputs=3;
sizes.NumInputs=2;
sizes.DirFeedthrough=0;
sizes.NumSampleTimes=1;
sys=simsizes(sizes);
x0=[0;0;0];
str=[];
ts=[-1 0];
function sys=mdlUpdates(x,u,d,bet,b,T)
e=x(1)-u(2);
sys(1,1)=x(1)+T*(x(2)-bet(1)*e);
sys(2,1)=x(2)+T*(x(3)-bet(2)*fal(e,0.5,d)+b*u(1));
sys(3,1)=x(3)+T*bet(3)*fal(e,0.25,d);
function sys=mdlOutputs(x)
sys=x;
function f=fal(e,a,d)
if abs(e)<d
    f=e*d^(a-1);
else
    f=(abs(e))^a*sign(e);
end
运行之前已经给定T=0.01,
运行时出现错误:
Input argument "T" is undefined.
不知道是什么原因,请高手指点一下吧!


[ 本帖最后由 leafsong 于 2006-8-24 16:21 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2006-8-25 18:55 | 显示全部楼层
是什么原因呢?请大家帮帮忙吧。
发表于 2006-8-27 09:28 | 显示全部楼层
你是调用哪个函数出现这种问题的?
我觉得有可能是由于函数调用顺序上除了问题,可以逐个函数调用测试。
最好检查一下路径。
这是我个人的看法,不一定正确。

评分

1

查看全部评分

发表于 2006-8-27 09:57 | 显示全部楼层

求教:关于rtw

我对简单的微分方程
               x'=-2x+u
进行仿真时,出现了以下问题:
Error executing build command: Error using ==> make_rtw
Error using ==> rtwgen
Error evaluating 'InitFcn' callback of block_diagram 'MyFirst'. Undefined function or variable 'Initiazation'.
通过帮助文件,我进行了一些设置,但调不过来。有没哪位高手遇到过此问题,麻烦指点一下。
发表于 2006-8-27 09:58 | 显示全部楼层

Sorry!

我发错了,不好意思!
 楼主| 发表于 2006-8-29 09:22 | 显示全部楼层
是调用mdlUpdates(x,u,d,bet,b,T)时出的问题
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-28 02:25 , Processed in 0.077197 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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