24小时热门版块排行榜    

查看: 233  |  回复: 0

z65668396

金虫 (正式写手)

[求助] matlab求助

clear
clc
A=1;
B=1;
Q=1;
R=1;
S=10;
x(1)=3;
H=[2,-1;-1,1];
[V,D]=eig(H);
V1=inv(V);
kf=10;
k0=0;
syms k
H=V*[0.3820^(kf-k),0;0,2.6180^(kf-k)]*V1 %求H
W11=H(1);
W21=H(2);
W12=H(3);
W22=H(4);
%求解Riccati方程解析解
P=(inv(W22-S*W12))*(S*W11-W21);
%求Kalman增益
K=inv(R)*B'*inv(A')*(P-Q)
%计算状态向量
for k=1:10,
    xnext=(A-B*K)*x(k);
    x(k+1)=xnext(1);
end
%计算控制向量
for k=1:10,
    u(k)=-K*x(k);
end
t=0:10;
P=subs(P,k,t)
subplot(2,2,1);
plot(t,P,'k*',t,P)   %绘制Riccati方程解
xlabel('k(sec.)')
gtext('P')
subplot(2,2,2)
plot(k,x,'k*',k,x) %绘制状态方程的解
xlabel('k')
gtext('x')
subplot(2,2,3)
plot(k,u,'k*',k,u) %绘制控制向量
xlabel('k')
gtext('u(k)')

运行时报错 符号和double之间转换出错  可是实在不知道应该怎么改  
求大神点拨   非常感谢
回复此楼

» 猜你喜欢

心有猛虎,细嗅蔷薇。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 z65668396 的主题更新
信息提示
请填处理意见