⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testcv.m

📁 在CV模型下的卡尔曼滤波算法MATLAB程序
💻 M
字号:
x1_position=[];
x1radar_position=[];
x1_0=[7700,5600,9700,180,40,55,0,0,0]';               %运动轨迹仿真初始值1
[x1radar_position,x1_position,x1_state]=track_cv(x1_0,1.5,60,0.1);   %目标1在[0,90s]作CV运动
x2Dradar_position=x1radar_position(1:2,:);
[x2radar_position,x2_position,x2_state]=track_cv(x1_0,1.5,60,0.0001);
xIF_position=x2radar_position(2:3,:);
%卡尔曼滤波
x=[7700,5600,9700,180,40,55]';
P=1000*[eye(6)];%eye生成单位阵
F=[eye(3),diag([1.5 1.5 1.5]);
    zeros(3),eye(3)];
G=[diag([1.5 1.5 1.5]);
    eye(3)];
Cw=[diag([0.001^2 0.001^2 0.001^2])];
Cn=[10^2 0 0;0 0.05^2 0;0 0 0.05^2];
Cn1=[10^2 0;0 0.05^2];
Cn2=[0.005^2 0;0 0.005^2];
Fradar_position=[];

for i=1:60
    i
    x1=F*x;
    P=F*P*F'+G*Cw*G';
    H=[x1(1)/sqrt(x1(1)^2+x1(2)^2+x1(3)^2) x1(2)/sqrt(x1(1)^2+x1(2)^2+x1(3)^2) x1(3)/sqrt(x1(1)^2+x1(2)^2+x1(3)^2) 0 0 0;
        -x1(2)/(x1(1)^2+x1(2)^2) x1(1)/(x1(1)^2+x1(2)^2) 0 0 0 0];
    K=P*H'*inv(H*P*H'+Cn1);
    P=(eye(6)-K*H)*P;
    xtemp=x1+K*(x2Dradar_position(:,i)-[sqrt(x1(1)^2+x1(2)^2+x1(3)^2);atan(x1(2)/x1(1))]);
    H2=[-xtemp(2)/(xtemp(1)^2+xtemp(2)^2) xtemp(1)/(xtemp(1)^2+xtemp(2)^2) 0 0 0 0;
        -(xtemp(1)*xtemp(3))/(sqrt(xtemp(1)^2+xtemp(2)^2)*(xtemp(1)^2+xtemp(2)^2+xtemp(3)^2)) -(xtemp(2)*xtemp(3))/(sqrt(xtemp(1)^2+xtemp(2)^2)*(xtemp(1)^2+xtemp(2)^2+xtemp(3)^2)) sqrt(xtemp(1)^2+xtemp(2)^2)/(xtemp(1)^2+xtemp(2)^2+xtemp(3)^2) 0 0 0];
    K2=P*H2'*inv(H2*P*H2'+Cn2);
    x=xtemp+K2*(xIF_position(:,i)-[atan(xtemp(2)/xtemp(1));atan(xtemp(3)/sqrt(xtemp(1)^2+xtemp(2)^2))]);
    P=(eye(6)-K2*H2)*P;
    Fradar_position=[Fradar_position x];
end
q=[];
for i=1:60
    q(1,i)=x1radar_position(1,i)*cos(x1radar_position(2,i))*cos(x1radar_position(3,i));
    q(2,i)=x1radar_position(1,i)*cos(x1radar_position(2,i))*sin(x1radar_position(3,i));
    q(3,i)=x1radar_position(1,i)*sin(x1radar_position(2,i));
end
i=1:60;
plot(i,x1_position(1,i),'r',i,Fradar_position(1,i),'g',i,q(1,i),'b')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -