24小时热门版块排行榜    

查看: 1297  |  回复: 3

zjc1987

金虫 (著名写手)

[求助] 降维观测器 为啥观测器误差不为0呢? 请高手帮我指出程序有没问题 已有1人参与

我是严格按照教材上的方法设计的降维观测器,可是为什么观测器误差不收敛到0呢?是一个最简单的线性系统:
dx/dt=Ax+Bu    y=Cx;
一下是我的程序:
注:下面的笑脸符号其实是“:)”,不知道出来的效果变成一个笑脸了。

function d=jiangweishiyan(t,x)
A=[0 1 0;0 0 1;-2 1 2];
B=[1;0; -1];
C=[1 -2 0;0 -1 3];
P=[C;0 0 1];
Q=inv(P);
AA=P*A*inv(P);
BB=P*B;
AA11=AA(1:2,1:2);
AA12=AA(1:2,3:3);
AA21=AA(3:3,1:2);
AA22=AA(3,3);
BB1=BB(1:2);
BB2=BB(3);
K=place(AA22',AA12',-4);
L=K';

u=sin(t);
d1=A*x(1:3)+B*u;
y0=C*x(1:3);
d2=(AA22-L*AA12)*(x(4)+L*y0)+(AA21-L*AA11)*y0+(BB2-L*BB1)*u;
d=[d1;d2];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function jiangweishiyansol
A=[0 1 0;0 0 1;-2 1 2];
B=[1;0 ;-1];
C=[1 -2 0;0 -1 3];
P=[C;0 0 1];
Q=inv(P);
AA=P*A*inv(P);
BB=P*B;
AA11=AA(1:2,1:2);
AA12=AA(1:2,3:3);
AA21=AA(3:3,1:2);
AA22=AA(3,3);
BB1=BB(1:2);
BB2=BB(3);
K=place(AA22',AA12',-4);
L=K';

initial=[1 2 -1 1];
[t x]=ode45(@jiangweishiyan,[0 17],initial);
x=x';
y0=C*x(1:3,;
est=Q*[y0;x(4,+L*y0];
error=x(2,-est(2,;
plot(t,error,'r-');hold on;
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

justdoit
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

1033070192

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★
zjc1987: 金币+5, 谢谢 2014-08-25 18:31:26
观测值与实际值应该误差很小,不可能误差为0
2楼2014-08-25 17:07:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zjc1987

金虫 (著名写手)

引用回帖:
2楼: Originally posted by 1033070192 at 2014-08-25 17:07:09
观测值与实际值应该误差很小,不可能误差为0

我明白,只是这个误差不但不是0,而是发散的,趋向于无穷大,这就不行了
justdoit
3楼2014-08-25 18:31:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

1033070192

金虫 (小有名气)

引用回帖:
3楼: Originally posted by zjc1987 at 2014-08-25 18:31:29
我明白,只是这个误差不但不是0,而是发散的,趋向于无穷大,这就不行了...

那估计你的观测器有些问题,你看看你的可观吗,你的好像是线性系统可以尝试下卡尔曼滤波器
4楼2014-08-29 10:45:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zjc1987 的主题更新
信息提示
请填处理意见