|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
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 编辑 ] |
|