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

📄 ccs.m

📁 雷达数据处理的重要算法之一
💻 M
字号:
trajectory3;

x(:,1)=X(:,1);  %初始状态向量

R=diag([200^2  10^2  200^2  10^2]);
P=50*eye(6);   %初始状态向量协方差


u=[1/3 1/3 1/3]';

a1=1;
a2=1/20;
a3=1/100;

a_max=100;
a_max_minus=-100;


%-----------
F=[1  T  T^2/2  0   0    0
   0  1    T    0   0    0
   0  0    1    0   0    0
   0  0    0    1   T  T^2/2
   0  0    0    0   1    T
   0  0    0    0   0    1];   %匀加速模型
%-----------
%CS
F1=[1    T    -(1-a1*T-exp(-a1*T))/a1^2   0     0            0
    0    1       (1-exp(-a1*T))/a1       0     0            0
    0    0         exp(-a1*T)           0     0            0
    0    0             0               1     T    -(1-a1*T-exp(-a1*T))/a1^2
    0    0             0               0     1       (1-exp(-a1*T))/a1
    0    0             0               0     0         exp(-a1*T)  ];

q11= 1/(2*a1^5)*(1-exp(-2*a1*T)+2*a1*T+2/3*a1^3*T^3-2*a1^2*T^2-4*a1*T*exp(-a1*T));
q12= 1/(2*a1^4)*(exp(-2*a1*T)+1-2*exp(-a1*T)+2*a1*T*exp(-a1*T)-2*a1*T+a1^2*T^2);
q13=1/(2*a1^3)*(1-exp(-2*a1*T)-2*a1*T*exp(-a1*T));
q21=q12;
q22=1/(2*a1^3)*(4*exp(-a1*T)-3-exp(-2*a1*T)+2*a1*T);
q23=1/(2*a1^2)*(exp(-2*a1*T)+1-2*exp(-a1*T));
q31=q13;
q32=q23;
q33=1/(2*a1)*(1-exp(-2*a1*T));

q1=[ q11  q12  q13   0    0    0
    q21  q22  q23   0    0    0 
    q31  q32  q33   0    0    0     
     0    0    0   q11  q12  q13
     0    0    0   q21  q22  q23
     0    0    0   q31  q32  q33];
%-----------
F2=[1    T    -(1-a2*T-exp(-a2*T))/a2^2   0     0            0
    0    1       (1-exp(-a2*T))/a2       0     0            0
    0    0         exp(-a2*T)           0     0            0
    0    0             0               1     T    -(1-a2*T-exp(-a2*T))/a2^2
    0    0             0               0     1       (1-exp(-a2*T))/a2
    0    0             0               0     0         exp(-a2*T)  ];

q11= 1/(2*a2^5)*(1-exp(-2*a2*T)+2*a2*T+2/3*a2^3*T^3-2*a2^2*T^2-4*a2*T*exp(-a2*T));
q12= 1/(2*a2^4)*(exp(-2*a2*T)+1-2*exp(-a2*T)+2*a2*T*exp(-a2*T)-2*a2*T+a2^2*T^2);
q13=1/(2*a2^3)*(1-exp(-2*a2*T)-2*a2*T*exp(-a2*T));
q21=q12;
q22=1/(2*a2^3)*(4*exp(-a2*T)-3-exp(-2*a2*T)+2*a2*T);
q23=1/(2*a2^2)*(exp(-2*a2*T)+1-2*exp(-a2*T));
q31=q13;
q32=q23;
q33=1/(2*a2)*(1-exp(-2*a2*T));

q2=[ q11  q12  q13   0    0    0
    q21  q22  q23   0    0    0 
    q31  q32  q33   0    0    0     
     0    0    0   q11  q12  q13
     0    0    0   q21  q22  q23
     0    0    0   q31  q32  q33];
%-----------
F3=[1    T    -(1-a3*T-exp(-a3*T))/a3^2   0     0            0
    0    1       (1-exp(-a3*T))/a3       0     0            0
    0    0         exp(-a3*T)           0     0            0
    0    0             0               1     T    -(1-a3*T-exp(-a3*T))/a3^2
    0    0             0               0     1       (1-exp(-a3*T))/a3
    0    0             0               0     0         exp(-a3*T)  ];

q11= 1/(2*a3^5)*(1-exp(-2*a3*T)+2*a3*T+2/3*a3^3*T^3-2*a3^2*T^2-4*a3*T*exp(-a3*T));
q12= 1/(2*a3^4)*(exp(-2*a3*T)+1-2*exp(-a3*T)+2*a3*T*exp(-a3*T)-2*a3*T+a3^2*T^2);
q13=1/(2*a3^3)*(1-exp(-2*a3*T)-2*a3*T*exp(-a3*T));
q21=q12;
q22=1/(2*a3^3)*(4*exp(-a3*T)-3-exp(-2*a3*T)+2*a3*T);
q23=1/(2*a3^2)*(exp(-2*a3*T)+1-2*exp(-a3*T));
q31=q13;
q32=q23;
q33=1/(2*a3)*(1-exp(-2*a3*T));

q3=[ q11  q12  q13   0    0    0
    q21  q22  q23   0    0    0 
    q31  q32  q33   0    0    0     
     0    0    0   q11  q12  q13
     0    0    0   q21  q22  q23
     0    0    0   q31  q32  q33];
%------------------------------------------
for i=2:length(z)   
     x1=F1*x(:,i-1);
     if x1(3) >= 0
        delta(1)=(4-pi)/pi*(a_max-x1(3))^2;
     else
        delta(1)=(4-pi)/pi*(a_max_minus+x1(3))^2;
     end
     if x1(6) >= 0
        delta(2)=(4-pi)/pi*(a_max-x1(6))^2;
     else
        delta(2)=(4-pi)/pi*(a_max_minus+x1(6))^2;
     end
     deltaA=diag([delta(1) delta(1) delta(1) delta(2) delta(2) delta(2)]); 
     Q=2*a1*deltaA*q1;
     P1=F1*P*F1'+Q;
     H=[ 1, 0, 0, 0, 0, 0
         0, 1, 0, 0, 0, 0
         0, 0, 0, 1, 0, 0
         0, 0, 0, 0, 1, 0];
     S1=H*P1*H'+R;
     K=P1*H'*inv(S1);% 增益K
     V1=z(:,i)-H*x1;
     x1=x1+K*V1;
     P1=(eye(6)-K*H)*P1*(eye(6)+K*H)'-K*R*K';
     %----------
     x2=F2*x(:,i-1);
     if x2(3) >= 0
        delta(1)=(4-pi)/pi*(a_max-x2(3))^2;
     else
        delta(1)=(4-pi)/pi*(a_max_minus+x2(3))^2;
     end
     if x2(6) >= 0
        delta(2)=(4-pi)/pi*(a_max-x2(6))^2;
     else
        delta(2)=(4-pi)/pi*(a_max_minus+x2(6))^2;
     end
     deltaA=diag([delta(1) delta(1) delta(1) delta(2) delta(2) delta(2)]); 
     Q=2*a2*deltaA*q2;
     P2=F2*P*F2'+Q;
     H=[ 1, 0, 0, 0, 0, 0
         0, 1, 0, 0, 0, 0
         0, 0, 0, 1, 0, 0
         0, 0, 0, 0, 1, 0];
     S2=H*P2*H'+R;
     K=P2*H'*inv(S2);% 增益K
     V2=z(:,i)-H*x2;
     x2=x2+K*V2;
     P2=(eye(6)-K*H)*P2*(eye(6)+K*H)'-K*R*K';
     %----------
     x3=F3*x(:,i-1);
     if x3(3) >= 0
        delta(1)=(4-pi)/pi*(a_max-x3(3))^2;
     else
        delta(1)=(4-pi)/pi*(a_max_minus+x3(3))^2;
     end
     if x3(6) >= 0
        delta(2)=(4-pi)/pi*(a_max-x3(6))^2;
     else
        delta(2)=(4-pi)/pi*(a_max_minus+x3(6))^2;
     end
     deltaA=diag([delta(1) delta(1) delta(1) delta(2) delta(2) delta(2)]); 
     Q=2*a3*deltaA*q3;
     P3=F3*P*F3'+Q;
     H=[ 1, 0, 0, 0, 0, 0
         0, 1, 0, 0, 0, 0
         0, 0, 0, 1, 0, 0
         0, 0, 0, 0, 1, 0];
     S3=H*P3*H'+R;
     K=P3*H'*inv(S3);% 增益K
     V3=z(:,i)-H*x3;
     x3=x3+K*V3;
     P3=(eye(6)-K*H)*P3*(eye(6)+K*H)'-K*R*K';
     %----------
     q(1)=exp(-1/2*V1'*inv(S1)*V1)/sqrt(det(2*pi*S1));
     q(2)=exp(-1/2*V2'*inv(S2)*V2)/sqrt(det(2*pi*S2));
     q(3)=exp(-1/2*V3'*inv(S3)*V3)/sqrt(det(2*pi*S3));
     
     c=q(1)*u(1)+q(2)*u(2)+q(3)*u(3);
     u(1)=q(1)*u(1)/c;
     u(2)=q(2)*u(2)/c;
     u(3)=q(3)*u(3)/c;
     %e:输出X、P
     x(:,i)=x1*u(1)+x2*u(2)+x3*u(3);
     P=u(1)*(P1+(x1-x(:,i))*(x1-x(:,i))')+u(2)*(P2+(x2-x(:,i))*(x2-x(:,i))')+u(3)*(P3+(x3-x(:,i))*(x3-x(:,i))');
end

%画图观察
% figure(1);
% plot(X(1,:),'b-'),hold on;
% plot(z(1,:),'k:')
% plot(x(1,:),'r:')
% title('横坐标位移');
% xlabel('秒');ylabel('米');
% legend('真实轨迹','测量值','滤波值');
% 
% figure(2);
% plot(X(2,:),'b-'),hold on;
% plot(z(2,:),'k:')
% plot(x(2,:),'r:')
% title('横坐标速度');
% xlabel('秒');ylabel('米/秒');
% legend('真实轨迹','测量值','滤波值');
% 
% figure(3);
% plot(X(4,:),'b-'),hold on;
% plot(z(3,:),'k:')
% plot(x(4,:),'r:')
% title('纵坐标位移');
% xlabel('秒');ylabel('米');
% legend('真实轨迹','测量值','滤波值');
% 
% figure(4);
% plot(X(5,:),'b-'),hold on;
% plot(z(4,:),'k:')
% plot(x(5,:),'r:')
% title('纵坐标速度');
% xlabel('秒');ylabel('米/秒');
% legend('真实轨迹','测量值','滤波值');

⌨️ 快捷键说明

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