精华内容
下载资源
问答
  • 分布式卡尔曼滤波matlab仿真
  • 卡尔曼滤波matlab

    2018-02-27 19:29:23
    卡尔曼算法matlab代码,包含扩展卡尔曼和无迹卡尔曼,测试通过。
  • 卡尔曼滤波MATLAB代码

    2018-03-19 18:16:51
    国外学者的开源卡尔曼滤波MATLAB代码,备注详细,可以用于目标跟踪基础学习
  • 卡尔曼滤波matlab仿真程序,简单介绍了关于卡尔曼滤波技术的简易程序,对于初学卡尔曼滤波技术的同学有很大的帮助,里面注释详细,以便大家理解。
  • 卡尔曼滤波MATLAB实现

    2019-04-29 09:13:49
    详细介绍了卡尔曼滤波原理,对卡尔曼滤波进行了MATLAB仿真设计
  • 卡尔曼滤波matlab程序

    2020-12-07 18:28:37
    二自由度卡尔曼滤波,实现X与Y方向两个自由度的滤波。代码使用awgn函数添加高斯白噪声,在用卡尔曼滤波的方法将除去噪声得到向真实值收敛的数据。
  • 基于CV、CA及Singer模型下的卡尔曼滤波matlab程序,三维坐标系,将极坐标下的观测值转为直角坐标滤波,实现机动目标跟踪功能,最后观察目标轨迹及滤波误差情况。
  • 卡尔曼滤波matlab代码样例 %Z=[(1:100);];%观测值 Z=ones(100,2); for j=1:100 Z(j,2)=1; Z(j,1)=j; end mu=[0,1];%数学期望 sigma=[0.5 0;0 0.1];%协方差矩阵 noise=mvnrnd(mu,sigma,100)%生成100个样本
  • 卡尔曼滤波 Matlab程序

    2018-11-07 16:46:33
    代码为书籍《卡尔曼滤波原理及应用》配套的代码,可用于卡尔曼滤波的学习
  • 卡尔曼滤波 matlab 目标跟踪 三维数据的
  • 卡尔曼滤波matlab代码,很不错的一段代码,扩展卡尔曼在参数估计等领域应用广泛,希望可以帮到你!
  • 卡尔曼滤波matlab示例

    2020-12-03 10:27:05
    卡尔曼滤波matlab示例 % 卡尔曼滤波实验 clc; clear all; close all; %==过程移噪声和观测噪声的估计是否加噪======= noise_flag=0;%如果加噪赋值1,否则赋值0 Q_N=100;% 对过程噪声方差Q估计的噪声方差 R_N=100; Q_...

    卡尔曼滤波matlab示例

    % 卡尔曼滤波实验
    clc;
    clear all;
    close all;
    %==过程移噪声和观测噪声的估计是否加噪=======
    noise_flag=0;%如果加噪赋值1,否则赋值0
    Q_N=100;% 对过程噪声方差Q估计的噪声方差
    R_N=100;
    Q_N_Mean=0;
    R_N_Mean=0;
    %============================================
    N=20;
    % 过程噪声方差Q
    Q = 0.5;
    % 观测噪声方差R
    R = 100;
    H=1;% 观测矩阵
    A=1;% 转移矩阵
    B=1;% 控制矩阵
    u=ones(1,20);% 控制量
    x(1)=0;% 初始x
    p(1)=0;
    I=eye(1,1);
    for ii = 1:N-1
        x(ii+1)=x(ii)*A+B*u(ii)+sqrt(Q)*randn(1,1);
        % 真实运动情况为
        % 转移增量(来自于上一次运动)+控制增量(来自外部控制)+噪声(过程噪声)
    end
    for ii=1:N
        z(ii)=H*x(ii)+sqrt(R)*randn(1,1);
        % 观测情况为
        % 观测量(来自此时刻观测值)+噪声(观测噪声)
    end
    x_hat_prior(1)=x(1);
    for k=1:N-1
        if noise_flag==1
        noiseQ=sqrt(Q_N)*randn(1,1)+Q_N_Mean;
        noiseR=sqrt(R_N)*randn(1,1)+R_N_Mean;
        else 
        noiseQ=0;
        noiseR=0;
      	end
        x_hat_prior(k+1)= A*x_hat_prior(k)+B*u(k);
        p_prior(k+1)=A*p(k)*A'+(Q+noiseQ);
        K(k+1)=(p_prior(k+1)*H')/(H*p_prior(k+1)+(R+noiseR));
        x_hat(k+1)=x_hat_prior(k+1)+K(k+1)*(z(k+1)-H*x_hat_prior(k+1));
        p(k+1)=(I-K(k+1)*H)*p_prior(k+1);
    end
    image=figure(1);
    subplot(2,1,1);
    plot(1:N,x,'g');
    hold on;
    plot(1:N,z,'b-.');
    plot(1:N,x_hat,'r--');
    legend('真实值','观测值','估计值');
    hold off;
    e_z=abs(x-z);
    e_h=abs(x-x_hat);
    subplot(2,1,2);
    plot(1:N,e_z,'r');
    hold on;
    plot(1:N,e_h,'b');
    legend('观测误差','估计误差');
    hold off;
    
    

    在这里插入图片描述
    卡尔曼滤波是针对多数据来源的一种取舍方法,根据对数据来源中噪声大小去分析更应该偏向于哪种消息来源。一种是观测值,一种是计算值,都有噪声的情况下需要先明确目前各自噪声大小。再由计算式得出理论计算得来的先验估计,以及通过后验初始误差的协方差和过程噪声协方差得到下一步的先验误差协方差;以上是预测部分,接下来是校正,计算卡尔曼增益以及后验估计,并且更新后验误差的协方差;以上讲的很笼统,具体推到推荐视频:Kalaman filter—DR_CAN_https://space.bilibili.com/230105574?spm_id_from=333.788.b_765f7570696e666f.2
    虽然大多数讲卡尔曼的文章给出解释很生动,但是这个是唯一让人听懂,明白的。

    展开全文
  • EKF 卡尔曼滤波matlab源程序 自己跑过,运行没问题
  • 卡尔曼滤波matlab代码

    2018-05-21 14:17:09
    本代码是两输入两输出的一个滤波系统,可以帮助理解卡尔曼滤波原理过程。
  • 资源是标准的卡尔曼滤波MATLAB代码,以养猪头例子为基础,资源下载后直接能用,解压后打开test.m,然后运行即可,相关的资料请参考博文https://blog.csdn.net/weixin_42647783/article/details/88080646,谢谢
  • kalman 滤波matlab 代码 %kalman filter 卡尔曼滤波 clear clc A = [1,1;0,1]; B = [1/2,1]; C = [1,0]; x1(1= 100; %初始化 x2(1= 10; x = [x1(1,x2(1]; z=C*x; P = [1,0;0,1]; Q=[2,0;0,1] R = 10; g=0.98; u=-g; ...
  • 【Kalman】卡尔曼滤波Matlab简单实现

    万次阅读 多人点赞 2017-10-24 12:29:26
      本节卡尔曼滤波Matlab实现是针对线性系统估计的,仅为简单仿真。 1.离散时间线性动态系统的状态方程   线性系统采用状态方程、观测方程及其初始条件来描述。线性离散时间系统的一般状态方程可描述为   ...

      本节卡尔曼滤波Matlab实现是针对线性系统估计的,仅为简单仿真。

    1.离散时间线性动态系统的状态方程

      线性系统采用状态方程、观测方程及其初始条件来描述。线性离散时间系统的一般状态方程可描述为

    20171024112842418

      其中,X(k) 是 k 时刻目标的状态向量,V(k)是过程噪声,它是具有均值为零、方差矩阵为 Q(k) 的高斯噪声向量,即
     

    20171024112914514

      Q(k)是状态转移矩阵, G(k)是过程噪声增益矩阵。

    2.传感器的测量(观测)方程

      传感器的通用观测方程为

    20171024113053020
     
      这里, Z(k+1)是传感器在 k+1 时刻的观测向量,观测噪声 W(k+1) 是具有零均值和正定协方差矩阵 R(k+1) 的高斯分布测量噪声向量,即

    20171024113204507

    3.初始状态的描述

      初始状态 X(0) 是高斯的,具有均值 X(0|0) 和协方差 ,即

    20171024121302177

    4.Kalman滤波算法

      状态估计的一步预测方程为

    20171024121729266

      一步预测的协方差为

    20171024121742650

      预测的观测向量为

    20171024121756210

      观测向量的预测误差协方差为

    20171024121808435

      新息或量测残差为

    20171024121829351

      滤波器增益为

    20171024121840760

      Kalman滤波算法的状态更新方程为

    20171024121859355

      滤波误差协方差的更新方程为

    20171024121908503

    % Kalman滤波技术
    
    A=1;                                        % 状态转移矩阵 Φ(k)
    H=0.2;                                      % 观测矩阵 H(k)
    X(1)=0;                                     % 目标的状态向量 X(k)
    % V(1)=0;                                   % 过程噪声 V(k)
    Y(1)=1;                                     % 一步预测x(k)的更新 X(k+1|k+1)
    P(1)=10;                                    % 一步预测的协方差 P(k)
    N=200;
    V=randn(1,N);                               % 模拟产生过程噪声(高斯分布的随机噪声)
    w=randn(1,N);                               % 模拟产生测量噪声
    
    for k=2:N
    
        X(k) = A * X(k-1)+V(k-1);               % 状态方程:X(k+1)=Φ(k)X(k)+G(k)V(k),其中G(k)=1
    
    end
    
    Q=std(V)^2;                                 % W(k)的协方差,std()函数用于计算标准偏差  
    R=std(w)^2;                                 % V(k)的协方差 covariance
    
    Z=H*X+w;                                    % 观测方程:Z(k+1)=H(k+1)X(k+1)+W(k+1),Z(k+1)是k+1时刻的观测值
    
    for t=2:N
    
        P(t) = A * P(t-1)+Q;                    % 一步预测的协方差 P(k+1|k)   
    
        S(t) = H.^2 * P(t)+R;                   % 观测向量的预测误差协方差 S(k+1)
    
        K(t) = H * P(t)/S(t);                   % 卡尔曼滤波器增益 K(k+1) 
    
        v(t) = Z(t) - ( A * H * Y(t-1) );       % 新息/量测残差 v(k+1)
    
        Y(t)=A * Y(t-1) + K(t) * v(t);          % 状态更新方程 X(k+1|k+1)=X(k+1|k)+K(k+1)*v(k+1)
    
        P(t)=(1-H * K(t)) * P(t);               % 误差协方差的更新方程: P(k+1|k+1)=(I-K(k+1)*H(k+1))*P(k+1|k)
    end
    
    
    t=1:N;
    plot(t,Y,'r',t,Z,'g',t,X,'b');              % 红色线最优化估算结果滤波后的值,%绿色线观测值,蓝色线预测值
    legend('Kalman滤波结果','观测值','预测值');

    运行结果

    20171024121938327
    20171024121949050

    展开全文
  • MATLAB中实现卡尔曼滤波的代码,带有数据集和代码demo,可直接运行,还有相关说明两篇
  • 简单的IMM卡尔曼滤波,基础的跟踪算法,希望对大家有用
  • 针对CV模型(Constant velocity model),编写的卡尔曼滤波程序,有相应报告及matlab代码。
  • 卡尔曼滤波MATLAB代码实现

    千次阅读 2018-10-20 15:22:45
    所以楼主参考网上资料结合一个小例子整理出卡尔曼滤波MATLAB代码实现。看懂这些代码我们需要对卡尔曼滤波算法有基本的理解。大致的理解就是卡尔曼滤波算法通过两个量对系统进行最优估计,而这两个量应该占多大的...

    没有大量的公式推导,个人感觉也没有必要,我们从小推导过很多公式,试着想想我们还能回忆起几个?个人认为只需要记住公式的用法,作用,知道有这个公式就可以。用的时候我们可以随时去查。所以楼主参考网上资料结合一个小例子整理出卡尔曼滤波的MATLAB代码实现。看懂这些代码我们需要对卡尔曼滤波算法有基本的理解。大致的理解就是卡尔曼滤波算法通过两个量对系统进行最优估计,而这两个量应该占多大的权重,这就是卡尔曼滤波的核心所在。卡尔曼滤波通过不断迭代(这也是为什么卡尔曼滤波这么多人研究的原因,计算机最会干的事情就是迭代)计算出最佳的权重比。从而对系统进行最优估计。

    这个例子就是被网上举例举烂了的房间温度预测案列。

    假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)。假设你对你的经验不是100%的相信,可能会有上下偏差几度。我们把这些偏差看成是高斯白噪声(White Gaussian Noise),也就是这些偏差跟前后时间是没有关系的而且符合高斯分配(Gaussian Distribution)。另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。我们也把这些偏差看成是高斯白噪声。
    好了,现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统的预测值)和温度计的值(测量值)。下面我们要用这两个值结合他们各自的噪声来估算出房间的实际温度值。
    假如我们要估算k时刻的是实际温度值。首先你要根据k-1时刻的温度值,来预测k时刻的温度。因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)。然后,你从温度计那里得到了k时刻的温度值,假设是25度,同时该值的偏差是4度。
    由于我们用于估算k时刻的实际温度有两个温度值,分别是23 度和25度。究竟实际温度是多少呢?相信自己还是相信温度计呢?究竟相信谁多一点,我们可以用他们的covariance(协方差)来判断。因为 Kg^2=5^2/(5^2+4^2),所以Kg=0.78,我们可以估算出k时刻的实际温度值是:23+0.78*(25-23)=24.56度。可以看出,因为温度计的covariance比较小(比较相信温度计),所以估算出的最优温度值偏向温度计的值。
    现在我们已经得到k时刻的最优温度值了,下一步就是要进入 k+1时刻,进行新的最优估算。到现在为止,好像还没看到什么自回归的东西出现。对了,在进入k+1时刻之前,我们还要算出k时刻那个最优值(24.56 度)的偏差。算法如下:((1-Kg)*5^2)^0.5=2.35。这里的5就是上面的k时刻你预测的那个23度温度值的偏差,得出的2.35就是进入 k+1时刻以后k时刻估算出的最优温度值的偏差(对应于上面的3)。
    就是这样,卡尔曼滤波器就不断的把 covariance递归,从而估算出最优的温度值。他运行的很快,而且它只保留了上一时刻的covariance。上面的Kg,就是卡尔曼增益(Kalman Gain)。

    我们理解了这个例子之后也不需要进行公示推导,我们只需要记住卡尔曼滤波的五个关键步骤即可。

    X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1))

    下面对应的上边那个房间温度预测的MATLAB代码

    x(k) = x(k - 1);%预估计k时刻状态变量的值
    p = p + Q;%对应于预估值的协方差
    kg = p / (p + R);%卡尔曼增益
    x(k) = x(k) + kg * (y(k) - x(k));
    p = (1 - kg) * p;

    clear
    clc;
    N=300;
    CON = 25;%房间温度,假定温度是恒定的
    %%%%%%%%%%%%%%%kalman filter%%%%%%%%%%%%%%%%%%%%%%
    x = zeros(1,N);
    y = 2^0.5 * randn(1,N) + CON;%加过程噪声的状态输出

    x(1) = 1;
    p = 10;

    Q = cov(randn(1,N));%过程噪声协方差
    R = cov(randn(1,N));%观测噪声协方差
    for k = 2 : N
    x(k) = x(k - 1);%预估计k时刻状态变量的值
    p = p + Q;%对应于预估值的协方差
    kg = p / (p + R);%kalman gain
    x(k) = x(k) + kg * (y(k) - x(k));
    p = (1 - kg) * p;
    end


    %%%%%%%%%%这一部分是对卡曼滤波算法的改进,通过加窗进行平滑处理%%%%%%%%%%%%%%%%%%%%%%%%

    Filter_Wid = 10;
    smooth_res = zeros(1,N);
    for i = Filter_Wid + 1 : N
    tempsum = 0;
    for j = i - Filter_Wid : i - 1
    tempsum = tempsum + y(j);
    end
    smooth_res(i) = tempsum / Filter_Wid;
    end
    % figure(1);
    % hist(y);
    t=1:N;
    figure(1);
    expValue = zeros(1,N);
    for i = 1: N
    expValue(i) = CON;
    end
    plot(t,expValue,'r',t,x,'g',t,y,'b',t,smooth_res,'k');
    legend('expected','estimate','measure','smooth result');
    axis([0 N 20 30])
    xlabel('Sample time');
    ylabel('Room Temperature');
    title('Smooth filter VS kalman filter');

    展开全文
  • 卡尔曼滤波matlab程序实现

    千次阅读 2019-08-22 11:12:16
    转自:https://blog.csdn.net/zhangquan2015/article/details/79264540 原 卡尔曼滤波应用及其matlab实现 ...

    转自:https://blog.csdn.net/zhangquan2015/article/details/79264540

    卡尔曼滤波应用及其matlab实现

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/zhangquan2015/article/details/79264540

    Github个人博客:https://joeyos.github.io

    线性卡尔曼滤波

    卡尔曼滤波在温度测量中的应用

    X(k)=AX(k-1)+TW(k-1)
    Z(k)=H*X(k)+V(k)

    房间温度在25摄氏度左右,测量误差为正负0.5摄氏度,方差0.25,R=0.25。Q=0.01,A=1,T=1,H=1。

    假定快时刻的温度值、测量值为23.9摄氏度,房间真实温度为24摄氏度,温度计在该时刻测量值为24.5摄氏度,偏差为0.4摄氏度。利用k-1时刻温度值测量第k时刻的温度,其预计偏差为:
    P(k|k-1)=P(k-1)+Q=0.02
    卡尔曼增益k=P(k|k-1) / (P(k|k-1) + R)=0.0741

    X(k)=23.9+0.0741*(24.1-23.9)=23.915摄氏度。

    k时刻的偏差为P(k)=(1-K*H)P(k|k-1)=0.0186。
    最后由X(k)和P(k)得出Z(k+1)。

    matlab实现为:

    % 程序说明:Kalman滤波用于温度测量的实例
    function main
    N=120;
    CON=25;%房间温度在25摄氏度左右
    Xexpect=CON*ones(1,N);
    X=zeros(1,N);  
    Xkf=zeros(1,N);
    Z=zeros(1,N);
    P=zeros(1,N); 
    X(1)=25.1;
    P(1)=0.01;
    Z(1)=24.9;
    Xkf(1)=Z(1);
    Q=0.01;%W(k)的方差
    R=0.25;%V(k)的方差
    W=sqrt(Q)*randn(1,N);
    V=sqrt(R)*randn(1,N);
    F=1;
    G=1;
    H=1;
    I=eye(1); 
    %%%%%%%%%%%%%%%%%%%%%%%
    for k=2:N
        X(k)=F*X(k-1)+G*W(k-1);  
        Z(k)=H*X(k)+V(k);
        X_pre=F*Xkf(k-1);           
        P_pre=F*P(k-1)*F'+Q;        
        Kg=P_pre*inv(H*P_pre*H'+R); 
        e=Z(k)-H*X_pre;            
        Xkf(k)=X_pre+Kg*e;         
        P(k)=(I-Kg*H)*P_pre;
    end
    %%%%%%%%%%%%%%%%
    Err_Messure=zeros(1,N);
    Err_Kalman=zeros(1,N);
    for k=1:N
        Err_Messure(k)=abs(Z(k)-X(k));
        Err_Kalman(k)=abs(Xkf(k)-X(k));
    end
    t=1:N;
    figure('Name','Kalman Filter Simulation','NumberTitle','off');
    plot(t,Xexpect,'-b',t,X,'-r',t,Z,'-k',t,Xkf,'-g');
    legend('expected','real','measure','kalman extimate');         
    xlabel('sample time');
    ylabel('temperature');
    title('Kalman Filter Simulation');
    figure('Name','Error Analysis','NumberTitle','off');
    plot(t,Err_Messure,'-b',t,Err_Kalman,'-k');
    legend('messure error','kalman error');         
    xlabel('sample time');
    %%%%%%%%%%%%%%%%%%%%%%%%%
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51

    这里写图片描述
    这里写图片描述

    卡尔曼滤波在自由落体运动目标跟踪中的应用

    %%%%%%%%%%%%%
    % 卡尔曼滤波用于自由落体运动目标跟踪问题
    %%%%%%%%%%%%%%
    function main
    N=1000; %仿真时间,时间序列总数
    %噪声
    Q=[0,0;0,0];%过程噪声方差为0,即下落过程忽略空气阻力
    R=1; %观测噪声方差
    W=sqrt(Q)*randn(2,N);%既然Q为0,即W=0
    V=sqrt(R)*randn(1,N);%测量噪声V(k)
    %系数矩阵
    A=[1,1;0,1];%状态转移矩阵
    B=[0.5;1];%控制量
    U=-1;
    H=[1,0];%观测矩阵
    %初始化
    X=zeros(2,N);%物体真实状态
    X(:,1)=[95;1];%初始位移和速度
    P0=[10,0;0,1];%初始误差
    Z=zeros(1,N);
    Z(1)=H*X(:,1);%初始观测值
    Xkf=zeros(2,N);%卡尔曼估计状态初始化
    Xkf(:,1)=X(:,1);
    err_P=zeros(N,2);
    err_P(1,1)=P0(1,1);
    err_P(1,2)=P0(2,2);
    I=eye(2); %二维系统
    %%%%%%%%%%%%%
    for k=2:N
        %物体下落,受状态方程的驱动
        X(:,k)=A*X(:,k-1)+B*U+W(k);
        %位移传感器对目标进行观测
        Z(k)=H*X(:,k)+V(k);
        %卡尔曼滤波
        X_pre=A*Xkf(:,k-1)+B*U;%状态预测 
        P_pre=A*P0*A'+Q;%协方差预测
        Kg=P_pre*H'*inv(H*P_pre*H'+R);%计算卡尔曼增益
        Xkf(:,k)=X_pre+Kg*(Z(k)-H*X_pre);%状态更新
        P0=(I-Kg*H)*P_pre;%方差更新
        %误差均方值
        err_P(k,1)=P0(1,1);
        err_P(k,2)=P0(2,2);
    end
    %误差计算
    messure_err_x=zeros(1,N);%位移的测量误差
    kalman_err_x=zeros(1,N);%卡尔曼估计的位移与真实位移之间的偏差
    kalman_err_v=zeros(1,N);%卡尔曼估计的速度与真实速度之间的偏差
    for k=1:N
        messure_err_x(k)=Z(k)-X(1,k);
        kalman_err_x(k)=Xkf(1,k)-X(1,k);
        kalman_err_v(k)=Xkf(2,k)-X(2,k);
    end
    %%%%%%%%%%%%%%%
    %画图输出
    %噪声图
    figure
    plot(V);
    title('messure noise')
    %位置偏差
    figure
    hold on,box on;
    plot(messure_err_x,'-r.');%测量的位移误差
    plot(kalman_err_x,'-g.');%卡尔曼估计位置误差
    legend('测量误差','kalman估计误差')
    figureplot(kalman_err_v);
    title('速度误差')
    figure
    plot(err_P(:,1));
    title('位移误差均方值')
    figure
    plot(err_P(:,1));
    title('速度误差均方值')
    %%%%%%%%%%%%%%%%%%%%%%%
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73

    这里写图片描述
    这里写图片描述

    卡尔曼滤波在船舶GPS导航定位

    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    %  Kalman滤波在船舶GPS导航定位系统中的应用
    function main
    clc;clear;
    T=1;%雷达扫描周期
    N=80/T;%总的采样次数
    X=zeros(4,N);%目标真实位置、速度
    X(:,1)=[-100,2,200,20];%目标初始位置、速度
    Z=zeros(2,N);%传感器对位置的观测
    Z(:,1)=[X(1,1),X(3,1)];%观测初始化
    delta_w=1e-2;%如果增大这个参数,目标真实轨迹就是曲线
    Q=delta_w*diag([0.5,1,0.5,1]) ;%过程噪声均值
    R=100*eye(2);%观测噪声均值
    F=[1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1];%状态转移矩阵
    H=[1,0,0,0;0,0,1,0];%观测矩阵
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%
    for t=2:N
        X(:,t)=F*X(:,t-1)+sqrtm(Q)*randn(4,1);%目标真实轨迹
        Z(:,t)=H*X(:,t)+sqrtm(R)*randn(2,1); %对目标观测
    end
    %卡尔曼滤波
    Xkf=zeros(4,N);
    Xkf(:,1)=X(:,1);%卡尔曼滤波状态初始化
    P0=eye(4);%协方差阵初始化
    for i=2:N
        Xn=F*Xkf(:,i-1);%预测
        P1=F*P0*F'+Q;%预测误差协方差
        K=P1*H'*inv(H*P1*H'+R);%增益
        Xkf(:,i)=Xn+K*(Z(:,i)-H*Xn);%状态更新
        P0=(eye(4)-K*H)*P1;%滤波误差协方差更新
    end
    %误差更新
    for i=1:N
        Err_Observation(i)=RMS(X(:,i),Z(:,i));%滤波前的误差
        Err_KalmanFilter(i)=RMS(X(:,i),Xkf(:,i));%滤波后的误差
    end
    %画图
    figure
    hold on;box on;
    plot(X(1,:),X(3,:),'-k');%真实轨迹
    plot(Z(1,:),Z(2,:),'-b.');%观测轨迹
    plot(Xkf(1,:),Xkf(3,:),'-r+');%卡尔曼滤波轨迹
    legend('真实轨迹','观测轨迹','滤波轨迹')
    figure
    hold on; box on;
    plot(Err_Observation,'-ko','MarkerFace','g')
    plot(Err_KalmanFilter,'-ks','MarkerFace','r')
    legend('滤波前误差','滤波后误差')
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %计算欧式距离子函数
    function dist=RMS(X1,X2);
    if length(X2)<=2
        dist=sqrt( (X1(1)-X2(1))^2 + (X1(3)-X2(2))^2 );
    else
        dist=sqrt( (X1(1)-X2(1))^2 + (X1(3)-X2(3))^2 );
    end
    %%%%%%%%%%%%%%%%%%%%%%%%
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56

    卡尔曼滤波在视频目标跟踪中的应用

    帧间差法目标检测

    % 目标检测函数,这个函数主要完成将目标从背景中提取出来
    function detect
    clear,clc;
    %计算背景图片数目
    Imzero = zeros(240,320,3);
    for i = 1:5
        %将图像文件读入矩阵Im
        Im{i} = double(imread(['DATA/',int2str(i),'.jpg']));
        Imzero = Im{i}+Imzero;
    end
    Imback = Imzero/5;
    [MR,MC,Dim] = size(Imback);
    %遍历所有图片
    for i = 1 : 60
        %读取所有帧
        Im = (imread(['DATA/',int2str(i), '.jpg']));
        imshow(Im); %显示图像Im,图像对比度低
        Imwork = double(Im);
        %检测目标
        [cc(i),cr(i),radius,flag] = extractball(Imwork,Imback,i);
        if flag==0 %没检测到目标,继续下一帧图像
            continue
        end
        hold on
        for c = -0.9*radius: radius/20 : 0.9*radius
            r = sqrt(radius^2-c^2);
            plot(cc(i)+c,cr(i)+r,'g.')
            plot(cc(i)+c,cr(i)-r,'g.')
        end
        pause(0.02)
    end
    %目标中心的位置,也就是目标的x,y坐标
    figure
    plot(cr,'-g*')
    hold on
    plot(cc,'-r*')
    

    % 提取目标区域的中心和能包含目标的最大半径
    function [cc,cr,radius,flag]=extractball(Imwork,Imback,index)
    %初始化目标区域中心的坐标,半径
    cc = 0;
    cr = 0;
    radius = 0;
    flag = 0;
    [MR,MC,Dim] = size(Imback);
    %除去背景,找到最大的不同区域,即目标区域
    fore = zeros(MR,MC);
    %背景相减,得到目标
    fore = (abs(Imwork(:,:,1)-Imback(:,:,1)) > 10) …
    | (abs(Imwork(:,:,2) - Imback(:,:,2)) > 10) …
    | (abs(Imwork(:,:,3) - Imback(:,:,3)) > 10);
    %图像腐蚀,除去微小的白噪声点
    %bwmorph该函数的功能是:提取二进制图像的轮廓
    foremm = bwmorph(fore,‘erode’,2);%“2”为次数
    %选取最大的目标
    labeled = bwlabel(foremm,4);%黑背景中甄别有多少白块块,4-连通
    %labeled是标记矩阵,图像分割后对不同的区域进行不同的标记
    stats = regionprops(labeled,[‘basic’]);
    [N,W] = size(stats);
    if N < 1
    return%一个目标区域也没检测到就返回
    end
    %在N个区域中,冒泡算法排序
    id = zeros(N);
    for i = 1 : N
    id(i) = i;
    end
    for i = 1 : N-1
    for j = i+1 : N
    if stats(i).Area < stats(j).Area
    tmp = stats(i);
    stats(i) = stats(j);
    stats(j) = tmp;
    tmp = id(i);
    id(i) = id(j);
    id(j) = tmp;
    end
    end
    end
    %确保至少有一个较大的区域(最大区域面积要大于100)
    if stats(1).Area < 100
    return
    end
    selected = (labeled==id(1));
    %计算最大区域的中心和半径
    centroid = stats(1).Centroid;
    radius = sqrt(stats(1).Area/pi);
    cc = centroid(1);
    cr = centroid(2);
    flag = 1;
    return

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91

    视频目标跟踪

    %  kalman滤波用户检测视频中的目标,并对目标跟踪
    function kalman_for_vedio_tracking
    clear,clc
    % 计算图像背景
    Imzero = zeros(240,320,3);
    for i = 1:5
    Im{i} = double(imread(['DATA/',int2str(i),'.jpg']));
    Imzero = Im{i}+Imzero;
    end
    Imback = Imzero/5;
    [MR,MC,Dim] = size(Imback);
    

    % Kalman 滤波器初始化
    R=[[0.2845,0.0045]’,[0.0045,0.0455]’];
    H=[[1,0]’,[0,1]’,[0,0]’,[0,0]’];
    Q=0.01eye(4);
    P = 100
    eye(4);
    dt=1; % 采样时间,也就是图像帧时间
    A=[[1,0,0,0]’,[0,1,0,0]’,[dt,0,1,0]’,[0,dt,0,1]’];
    g = 6; % pixels^2/time step
    Bu = [0,0,0,g]’;
    kfinit=0; % kalman增益初始化
    x=zeros(100,4); % 目标状态初始化

    % 检测视频中每一帧图像
    for i = 1 : 60
    % 读取图像
    Im = (imread([‘DATA/’,int2str(i), ‘.jpg’]));
    imshow(Im)
    imshow(Im)
    Imwork = double(Im);

    % 检测目标(目标是一个球)
    [cc(i),cr(i),radius,flag] = extractball(Imwork,Imback,i);
    if flag==0
    continue
    end

    hold on
    for c = -1radius: radius/20 : 1radius
    r = sqrt(radius2-c2);
    plot(cc(i)+c,cr(i)+r,‘g.’)
    plot(cc(i)+c,cr(i)-r,‘g.’)
    end
    % Kalman update
    i
    if kfinit==0
    xp = [MC/2,MR/2,0,0]’
    else
    xp=Ax(i-1,:)’ + Bu
    end
    kfinit=1;
    PP = A
    PA’ + Q
    K = PP
    H’inv(HPPH’+R)
    x(i,:) = (xp + K
    ([cc(i),cr(i)]’ - Hxp))’;
    x(i,:)
    [cc(i),cr(i)]
    P = (eye(4)-K
    H)*PP

    hold on
    for c = -1radius: radius/20 : 1radius
    r = sqrt(radius2-c2);
    plot(x(i,1)+c,x(i,2)+r,‘r.’)
    plot(x(i,1)+c,x(i,2)-r,‘r.’)
    end
    pause(0.3)
    end

    % show positions
    figure
    plot(cc,‘r*’)
    hold on
    plot(cr,‘g*’)
    %end

    %estimate image noise ® from stationary ball
    posn = [cc(55:60)’,cr(55:60)’];
    mp = mean(posn);
    diffp = posn - ones(6,1)*mp;
    Rnew = (diffp’*diffp)/5;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % 提取目标区域的中心和能包含目标的最大半径
    function [cc,cr,radius,flag]=extractball(Imwork,Imback,index)
    cc = 0;
    cr = 0;
    radius = 0;
    flag = 0;
    [MR,MC,Dim] = size(Imback);
    fore = zeros(MR,MC);
    fore = (abs(Imwork(:,:,1)-Imback(:,:,1)) > 10) …
    | (abs(Imwork(:,:,2) - Imback(:,:,2)) > 10) …
    | (abs(Imwork(:,:,3) - Imback(:,:,3)) > 10);
    foremm = bwmorph(fore,‘erode’,2);
    labeled = bwlabel(foremm,4);
    stats = regionprops(labeled,[‘basic’]);
    [N,W] = size(stats);
    if N < 1
    return
    end
    id = zeros(N);
    for i = 1 : N
    id(i) = i;
    end
    for i = 1 : N-1
    for j = i+1 : N
    if stats(i).Area < stats(j).Area
    tmp = stats(i);
    stats(i) = stats(j);
    stats(j) = tmp;
    tmp = id(i);
    id(i) = id(j);
    id(j) = tmp;
    end
    end
    end
    if stats(1).Area < 100
    return
    end
    selected = (labeled==id(1));
    centroid = stats(1).Centroid;
    radius = sqrt(stats(1).Area/pi);
    cc = centroid(1);
    cr = centroid(2);
    flag = 1;
    return

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125

    扩展卡尔曼滤波

    对于非线性系统滤波问题,常用的处理方法是利用线性化技巧将其转化为一个近似的线性滤波问题,其中应用最广泛的方法是扩展卡尔曼滤波(EKF)。扩展卡尔曼滤波建立在线性卡尔曼滤波的基础之上。其核心思想是,对一般的非线性系统,首先围绕滤波值Xk将非线性函数f和h展开成泰勒级数并略去二阶及以上项,得到一个近似的线性化模型,然后应用卡尔曼滤波完成对目标的滤波估计等处理。

    EKF的优点是不必预先计算标称轨迹,过程噪声W(k)和观测噪声V(k)均为0,时非线性方程的解,但它只能在滤波误差及一步预测误差较小时才能使用。

    简单非线性系统的扩展卡尔曼滤波器

    这里写图片描述
    这里写图片描述

    %  函数功能:标量非线性系统扩展Kalman滤波问题
    %  状态函数:X(k+1)=0.5X(k)+2.5X(k)/(1+X(k)^2)+8cos(1.2k) +w(k)
    %  观测方程:Z(k)=X(k)^2/20 +v(k)
    function EKF_for_One_Div_UnLine_System
    T=50;%总时间
    Q=10;%Q的值改变,观察不同Q值时滤波结果
    R=1;%测量噪声
    %产生过程噪声
    w=sqrt(Q)*randn(1,T);
    %产生观测噪声
    v=sqrt(R)*randn(1,T);
    %状态方程
    x=zeros(1,T);
    x(1)=0.1;
    y=zeros(1,T);
    y(1)=x(1)^2/20+v(1);
    for k=2:T
        x(k)=0.5*x(k-1)+2.5*x(k-1)/(1+x(k-1)^2)+8*cos(1.2*k)+w(k-1);
        y(k)=x(k)^2/20+v(k);
    end
    %EKF滤波算法
    Xekf=zeros(1,T);
    Xekf(1)=x(1);
    Yekf=zeros(1,T);
    Yekf(1)=y(1);
    P0=eye(1);
    for k=2:T
        %状态预测
        Xn=0.5*Xekf(k-1)+2.5*Xekf(k-1)/(1+Xekf(k-1)^2)+8*cos(1.2*k);
        %观测预测
        Zn=Xn^2/20;
        %求状态矩阵F
        F=0.5+2.5 *(1-Xn^2)/(1+Xn^2)^2;
        %求观测矩阵
        H=Xn/10;
        %协方差预测
        P=F*P0*F'+Q;
        %求卡尔曼增益     
        K=P*H'*inv(H*P*H'+R);
        %状态更新
        Xekf(k)=Xn+K*(y(k)-Zn);
        %协方差阵更新
        P0=(eye(1)-K*H)*P;
    end
    %误差分析
    Xstd=zeros(1,T);
    for k=1:T
        Xstd(k)=abs( Xekf(k)-x(k) );
    end
    %画图
    figure
    hold on;box on;
    plot(x,'-ko','MarkerFace','g');
    plot(Xekf,'-ks','MarkerFace','b');
    %误差分析
    figure
    hold on;box on;
    plot(Xstd,'-ko','MarkerFace','g');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58

    真实值与估计值对比:
    这里写图片描述
    滤波误差:
    这里写图片描述

    EKF在目标跟踪中的应用

    基于距离的目标跟踪算法Matlab程序

    %  扩展Kalman滤波在目标跟踪中的应用
    function EKF_For_TargetTracking
    clc;clear;
    T=1;%雷达扫描周期
    N=60/T;%总的采样次数
    X=zeros(4,N);%目标初始位置、速度
    X(:,1)=[-100,2,200,20];%目标初始位置、速度
    Z=zeros(1,N);%传感器对位置的观测
    delta_w=1e-3;%如果增大这个参数,目标真实轨迹就是曲线
    Q=delta_w*diag([0.5,1]);%过程噪声方差
    G=[T^2/2,0;T,0;0,T^2/2;0,T];%过程噪声驱动矩阵
    R=5;%观测噪声方差
    F=[1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1];%状态转移矩阵
    x0=200;%观测站的位置,可以设为其他值
    y0=300; 
    Xstation=[x0,y0];
    for t=2:N
        X(:,t)=F*X(:,t-1)+G*sqrtm(Q)*randn(2,1);%目标真实轨迹 
    end
    for t=1:N
        Z(t)=Dist(X(:,t),Xstation)+sqrtm(R)*randn;%对目标观测
    end
    %EKF滤波
    Xekf=zeros(4,N);
    Xekf(:,1)=X(:,1);%卡尔曼滤波状态初始化
    P0=eye(4);%协方差阵初始化
    for i=2:N
        Xn=F*Xekf(:,i-1);%预测
        P1=F*P0*F'+G*Q*G';%预测误差协方差
        dd=Dist(Xn,Xstation);%观测预测
        %求雅克比矩阵H
        H=[(Xn(1,1)-x0)/dd,0,(Xn(3,1)-y0)/dd,0];%即为所求一阶近似
        K=P1*H'*inv(H*P1*H'+R);%增益
        Xekf(:,i)=Xn+K*(Z(:,i)-dd);%状态更新
        P0=(eye(4)-K*H)*P1;%滤波误差协方差更新
    end
    %误差分析
    for i=1:N
        Err_KalmanFilter(i)=Dist(X(:,i),Xekf(:,i));%滤波后的误差
    end
    %画图
    figure
    hold on;box on;
    plot(X(1,:),X(3,:),'-k.');%真实轨迹
    plot(Xekf(1,:),Xekf(3,:),'-r+');%扩展卡尔曼滤波轨迹
    legend('真实轨迹','EKF轨迹')
    figure
    hold on; box on;
    plot(Err_KalmanFilter,'-ks','MarkerFace','r')
    

    %子函数,求两点间的距离
    function d=Dist(X1,X2);
    if length(X2)<=2
    d=sqrt( (X1(1)-X2(1))^2 + (X1(3)-X2(2))^2 );
    else
    d=sqrt( (X1(1)-X2(1))^2 + (X1(3)-X2(3))^2 );
    end

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    这里写图片描述
    这里写图片描述

    基于EKF的纯方位目标跟踪算法

    %  扩展Kalman滤波在纯方位目标跟踪中的应用实例
    function EKF_angle
    clc;clear;
    T=1;%雷达扫描周期
    N=40/T;%总的采样次数
    X=zeros(4,N);%目标真实位置、速度
    X(:,1)=[0,2,1400,-10];%目标初始位置、速度
    Z=zeros(1,N); %传感器对位置的观测
    delta_w=1e-4;%如果增大这个参数,目标真实轨迹就是曲线了
    Q=delta_w*diag([1,1]) ;%过程噪声均值
    G=[T^2/2,0;T,0;0,T^2/2;0,T];%过程噪声驱动矩阵
    R=0.1*pi/180;%观测噪声方差
    F=[1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1];%状态转移矩阵
    x0=0;%观测站的位置,可以设为其他值
    y0=1000; 
    Xstation=[x0;y0];
    

    w=sqrtm®randn(1,N);%均值为0,方差为1的高斯噪声
    for t=2:N
    X(:,t)=F
    X(:,t-1)+Gsqrtm(Q)randn(2,1);%目标真实轨迹
    end
    for t=1:N
    Z(t)=hfun(X(:,t),Xstation)+w(t);%目标观测
    %对sqrtm®w(t)转化为角度sqrtm®w(t)/pi180可以看出噪声的大小
    end
    %EKF滤波
    Xekf=zeros(4,N);
    Xekf(:,1)=X(:,1);%卡尔曼滤波状态初始化
    P0=eye(4);%协方差阵初始化
    for i=2:N
    Xn=F
    Xekf(:,i-1);%预测
    P1=F
    P0
    F’+GQG’;%预测误差协方差
    dd=hfun(Xn,Xstation);%观测预测
    %求雅克比矩阵H
    D=Dist(Xn,Xstation);
    H=[-(Xn(3,1)-y0)/D,0,(Xn(1,1)-x0)/D,0];%即为所求一阶近似
    K=P1H’inv(HP1H’+R);%增益
    Xekf(:,i)=Xn+K*(Z(:,i)-dd);%状态更新
    P0=(eye(4)-KH)P1;%滤波误差协方差更新
    end
    %误差分析
    for i=1:N
    Err_KalmanFilter(i)=sqrt(Dist(X(:,i),Xekf(:,i)));
    end
    %画图
    figure
    hold on;box on;
    plot(X(1,:),X(3,:),’-k.’);%真实轨迹
    plot(Xekf(1,:),Xekf(3,:),’-r+’);%扩展卡尔曼滤波轨迹
    legend(‘真实轨迹’,‘EKF轨迹’)
    figure
    hold on; box on;
    plot(Err_KalmanFilter,’-ks’,‘MarkerFace’,‘r’)
    figure
    hold on;box on;
    plot(Z/pi
    180,’-r.’,‘MarkerFace’,‘r’);%真实角度值
    plot(Z/pi
    180+w/pi180,’-ko’,‘MarkerFace’,‘g’);%受噪声污染的观测值
    legend(‘真实角度’,‘观测角度’);
    function cita=hfun(X1,X0) %需要注意各个象限角度的变化
    if X1(3,1)-X0(2,1)>=0
    if X1(1,1)-X0(1,1)>0
    cita=atan(abs( (X1(3,1)-X0(2,1))/(X1(1,1)-X0(1,1)) ));
    elseif X1(1,1)-X0(1,1)==0
    cita=pi/2;
    else
    cita=pi/2+atan(abs( (X1(3,1)-X0(2,1))/(X1(1,1)-X0(1,1)) ));
    end
    else
    if X1(1,1)-X0(1,1)>0
    cita=3
    pi/2+atan(abs( (X1(3,1)-X0(2,1))/(X1(1,1)-X0(1,1)) ));
    elseif X1(1,1)-X0(1,1)==0
    cita=3*pi/2;
    else
    cita=pi+atan(abs( (X1(3,1)-X0(2,1))/(X1(1,1)-X0(1,1)) ));
    end
    end
    function d=Dist(X1,X2);
    if length(X2)<=2
    d=( (X1(1)-X2(1))^2 + (X1(3)-X2(2))^2 );
    else
    d=( (X1(1)-X2(1))^2 + (X1(3)-X2(3))^2 );
    end

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82

    跟踪轨迹
    这里写图片描述
    跟踪误差RMS
    这里写图片描述
    观测值和真实值的对比
    这里写图片描述

    EKF在三维纯方位寻的导弹制导中的应用

    %  程序说明:目标跟踪程序,实现运动弹头对运动物体的三维跟踪,主函数
    %  状态方程: x(t)=Ax(t-1)+Bu(t-1)+w(t)
    function main
    delta_t=0.01;%测量周期,采样周期
    longa=10000;%机动时间常数的倒数,即机动频率
    tf=3.7;   
    T=tf/delta_t;%时间长度3.7s,一共采样T=370次
    %状态转移矩阵F
    F=[eye(3),delta_t*eye(3),(exp(-1*longa*delta_t)+...
       longa*delta_t-1)/longa^2*eye(3);
        zeros(3),eye(3),(1-exp(-1*longa*delta_t))/longa*eye(3);
        zeros(3),zeros(3),exp(-1*longa*delta_t)*eye(3)]; 
    %控制量驱动矩阵gama
    G=[-1*0.5*delta_t^2*eye(3);-1*delta_t*eye(3);zeros(3)]; 
    N=3; %导航比(制导率)
    for i=1:50	%做50次蒙特卡洛仿真
        x=zeros(9,T);
        x(:,1)=[3500,1500,1000,-1100,-150,-50,0,0,0]';%初始状态X(0)
        ex=zeros(9,T);   
        ex(:,1)=[3000,1200,960,-800,-100,-100,0,0,0]';%滤波器状态Xekf(0)
        cigema=sqrt(0.1);  
        w=[zeros(6,T);cigema*randn(3,T)];%过程噪声
        Q=[zeros(6),zeros(6,3);zeros(3,6),cigema^2*eye(3)];  
        z=zeros(2,T);%观测值
        z(:,1)=[atan( x(2,1)/sqrt(x(1,1)^2+x(3,1)^2) ), atan(-1*x(3,1)/x(1,1))]';
        v=zeros(2,T);%观测噪声
        for k=2:T-3
            tgo=tf-k*0.01+0.0000000000000001;
            c1=N/tgo^2;%制导率的系数
            c2=N/tgo;%制导率的系数
            c3=N*(exp(-longa*tgo)+longa*tgo-1)/(longa*tgo)^2;%制导率的系数
            %X、Y、Z三个方向的导弹加速度
            u(1,k-1)=[c1,c2,c3]*[x(1,k-1),x(4,k-1),x(7,k-1)]';
            u(2,k-1)=[c1,c2,c3]*[x(2,k-1),x(5,k-1),x(8,k-1)]';
            u(3,k-1)=[c1,c2,c3]*[x(3,k-1),x(6,k-1),x(9,k-1)]';
            x(:,k)=F*x(:,k-1)+G*u(:,k-1)+w(:,k-1);%目标状态方程
            d=sqrt(x(1,k)^2+x(2,k)^2+x(3,k)^2);
            D=[d,0;0,d];
            R=inv(D)*0.1*eye(2)*inv(D)';%观测噪声方差
            v(:,k)=sqrtm(R)*randn(2,1);%观测噪声模拟
            %目标观测方程
            z(:,k)=[atan( x(2,k)/sqrt(x(1,k)^2+x(3,k)^2) ), ...
                atan(-1*x(3,k)/x(1,k))]'+v(:,k);  
        end
        %根据观测值开始滤波
        P0=[10^4*eye(6),zeros(6,3);zeros(3,6),10^2*eye(3)];%协方差初始化
        eP0=P0;
        stop=0.5/0.01;
        span=1/0.01;
        for k=2:T-3
            dd=sqrt(ex(1,k-1)^2+ex(2,k-1)^2+ex(3,k-1)^2);
            DD=[dd,0;0,dd];
            RR=0.1*eye(2)/(DD*DD');
            tgo=tf-k*0.01+0.0000000000000001;
            c1=N/tgo^2;
            c2=N/tgo;
            c3=N*(exp(-longa*tgo)+longa*tgo-1)/(longa*tgo)^2;
            u(1,k-1)=[c1,c2,c3]*[ex(1,k-1),ex(4,k-1),ex(7,k-1)]';
            u(2,k-1)=[c1,c2,c3]*[ex(2,k-1),ex(5,k-1),ex(8,k-1)]';
            u(3,k-1)=[c1,c2,c3]*[ex(3,k-1),ex(6,k-1),ex(9,k-1)]';
            %调用扩展卡尔曼算法子函数
            [ex(:,k),eP0]=ekf(F,G,Q,RR,eP0,u(:,k-1),z(:,k),ex(:,k-1));
        end
        for t=1:T-3 %求每个时间点误差的平方
            Ep_ekfx(i,t)=sqrt((ex(1,t)-x(1,t))^2);
            Ep_ekfy(i,t)=sqrt((ex(2,t)-x(2,t))^2);
            Ep_ekfz(i,t)=sqrt((ex(3,t)-x(3,t))^2);
            Ep_ekf(i,t)=sqrt( (ex(1,t)-x(1,t))^2+(ex(2,t)-x(2,t))^2+(ex(3,t)-x(3,t))^2 );
            Ev_ekf(i,t)=sqrt( (ex(4,t)-x(4,t))^2+(ex(5,t)-x(5,t))^2+(ex(6,t)-x(6,t))^2 );
            Ea_ekf(i,t)=sqrt( (ex(7,t)-x(7,t))^2+(ex(8,t)-x(8,t))^2+(ex(9,t)-x(9,t))^2 );
        end
    
    for t=1:T-3 %求误差的均值,即RMS
        error_x(t)=mean(Ep_ekfx(:,t));
        error_y(t)=mean(Ep_ekfy(:,t));
        error_z(t)=mean(Ep_ekfz(:,t));
        error_r(t)=mean(Ep_ekf(:,t));
        error_v(t)=mean(Ev_ekf(:,t));
        error_a(t)=mean(Ea_ekf(:,t));
    end
    

    end
    t=0.01:0.01:3.67;
    %轨迹图
    figure
    hold on;box on;grid on;
    plot3(x(1,:),x(2,:),x(3,:),’-k.’)
    plot3(ex(1,:),ex(2,:),ex(3,:),’-r.’,‘MarkerFace’,‘r’)
    legend(‘real’,‘ekf’);
    view(3)
    title(‘position’)
    %位置偏差图
    figure
    hold on;box on;grid on;
    plot(t,error_r,‘b’);
    xlabel(‘飞行时间/s’);
    ylabel(‘弹目相对距离估计误差/m’);
    %加速度偏差图
    figure
    hold on;box on;grid on;
    plot(t,error_v,‘b’);
    xlabel(‘飞行时间/s’);
    ylabel(‘速度估计误差m/s’);

    %子函数
    %ex为扩展卡尔曼估计得到的状态
    function [ex,P0]=ekf(F,G,Q,R,P0,u,z,ex)
    %状态预测
    Xn=Fex+Gu;
    %观测预测
    Zn=[atan( Xn(2)/sqrt(Xn(1)2+Xn(3)2) ),atan(-1Xn(3)/Xn(1))]’;
    %协方差阵预测
    P=F
    P0F’+Q;
    %计算线性化的H矩阵
    dh1_dx=-1
    Xn(1)Xn(2)/(Xn(1)2+Xn(2)2+Xn(3)2)/sqrt(Xn(1)2+Xn(3)^2);
    dh1_dy=sqrt(Xn(1)2+Xn(3)2)/(Xn(1)2+Xn(2)2+Xn(3)^2);
    dh1_dz=-1
    Xn(2)Xn(3)/(Xn(1)2+Xn(2)2+Xn(3)2)/sqrt(Xn(1)2+Xn(3)^2);
    dh2_dx=Xn(3)/(Xn(1)2+Xn(3)2);
    dh2_dy=0;
    dh2_dz=-1
    Xn(1)/(Xn(1)2+Xn(3)2);
    H=[dh1_dx,dh1_dy,dh1_dz,0,0,0,0,0,0;dh2_dx,dh2_dy,dh2_dz,0,0,0,0,0,0];
    %卡尔曼增益
    K=PH’/(HPH’+R);
    %状态更新
    ex=Xn+K
    (z-Zn);
    %协方差阵更新
    P0=(eye(9)-K*H)*P;

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126

    寻的导弹EKF跟踪位置偏差
    这里写图片描述
    寻的导弹EKF跟踪速度偏差
    这里写图片描述
    寻的导弹EKF跟踪加速度偏差
    这里写图片描述

    无迹卡尔曼滤波

    前面讨论的扩展卡尔曼滤波算法是对非线性的系统方程或者观测方程进行泰勒展开并保留其一阶近似项,这样不可避免地引入线性化误差。如果线性化假设不成立,采用这种算法则会导致滤波器性能下降以至于造成发散。另外,在一般情况下计算系统状态方程和观测方程的Jacobian矩阵是不易实现的,增加了算法的计算复杂度。

    无迹卡尔曼滤波UKF摒弃了对非线性函数进行线性化的传统做法,采用卡尔曼线性滤波框架,对于一步预测方程,使用无迹变换UT来处理均值和协方差的非线性传递问题。UKF算法是对非线性函数的概率密度分布进行近似,用一系列确定样本来逼近状态的后验概率密度,而不是对非线性函数进行近似,不需要对Jacobian矩阵进行求导。UKF没有把高阶项忽略,因此对于非线性分布的娃统计量有较高的计算精度,有效地克服了扩展卡尔曼滤波的估计精度低、稳定性差的缺陷。

    无迹卡尔曼滤波在单观测站目标跟踪中的应用

    %  无迹Kalman滤波在目标跟踪中的应用
    function UKF
    clc;clear;
    T=1; %雷达扫描周期
    N=60/T; %总的采样次数
    X=zeros(4,N);%目标真实位置,速度
    X(:,1)=[-100,2,200,20]; %目标初始位置、速度
    Z=zeros(1,N);  %传感器对位置的观测
    delta_w=1e-3; %如果增大这个参数,目标真实轨迹就是曲线
    Q=delta_w*diag([0.5,1]) ;%过程噪声均值
    G=[T^2/2,0;T,0;0,T^2/2;0,T];%过程噪声驱动矩阵
    R=5;%观测噪声方差
    F=[1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1];%状态转移矩阵
    x0=200; %观测站的位置,可以设为其他值
    y0=300;
    Xstation=[x0,y0]; %雷达站的位置
    

    w=sqrtm®randn(1,N);
    for t=2:N
    X(:,t)=F
    X(:,t-1)+Gsqrtm(Q)randn(2,1);%目标观测
    end
    %UKF滤波,UT变换
    for t=1:N
    Z(t)=Dist(X(:,t),Xstation)+w(t);
    end
    L=4;
    alpha=1;
    kalpha=0;
    belta=2;
    ramda=3-L;
    for j=1:2
    L+1
    Wm(j)=1/(2
    (L+ramda));
    Wc(j)=1/(2*(L+ramda));
    end
    Wm(1)=ramda/(L+ramda);
    Wc(1)=ramda/(L+ramda)+1-alpha^2+belta;%权值计算

    Xukf=zeros(4,N);
    Xukf(:,1)=X(:,1);%无迹卡尔曼滤波状态初始化
    P0=eye(4);%协方差阵初始化
    for t=2:N
    xestimate= Xukf(:,t-1);
    P=P0;
    %第一步:获得一组Sigma点集
    cho=(chol(P*(L+ramda)))’;
    for k=1:L
    xgamaP1(:,k)=xestimate+cho(:,k);
    xgamaP2(:,k)=xestimate-cho(:,k);
    end
    Xsigma=[xestimate,xgamaP1,xgamaP2];
    %第二步:对Sigma点集进行一步预测
    Xsigmapre=FXsigma;
    %第三步:利用第二步的结果计算均值和协方差
    Xpred=zeros(4,1);%均值
    for k=1:2
    L+1
    Xpred=Xpred+Wm(k)Xsigmapre(:,k);
    end
    Ppred=zeros(4,4);%协方差阵预测
    for k=1:2
    L+1
    Ppred=Ppred+Wc(k)(Xsigmapre(:,k)-Xpred)(Xsigmapre(:,k)-Xpred)’;
    end
    Ppred=Ppred+GQG’;
    %第四步:根据预测值,再一次使用UT变换,得到新的sigma点集
    chor=(chol((L+ramda)Ppred))’;
    for k=1:L
    XaugsigmaP1(:,k)=Xpred+chor(:,k);
    XaugsigmaP2(:,k)=Xpred-chor(:,k);
    end
    Xaugsigma=[Xpred XaugsigmaP1 XaugsigmaP2];
    %第五步:观测预测
    for k=1:2
    L+1%观测预测
    Zsigmapre(1,k)=hfun(Xaugsigma(:,k),Xstation);
    end
    %第六步:计算观测预测均值和协方差
    Zpred=0;%观测预测的均值
    for k=1:2L+1
    Zpred=Zpred+Wm(k)Zsigmapre(1,k);
    end
    Pzz=0;
    for k=1:2
    L+1
    Pzz=Pzz+Wc(k)
    (Zsigmapre(1,k)-Zpred)*(Zsigmapre(1,k)-Zpred)’;
    end
    Pzz=Pzz+R;%得到协方差Pzz

    Pxz=zeros(4,1);
    for k=1:2*L+1
        Pxz=Pxz+Wc(k)*(Xaugsigma(:,k)-Xpred)*(Zsigmapre(1,k)-Zpred)';
    end
    %第七步:计算卡尔曼增益
    K=Pxz*inv(Pzz);
    %第八步:状态和方差更新
    xestimate=Xpred+K*(Z(t)-Zpred);%状态更新
    P=Ppred-K*Pzz*K';%方差更新
    P0=P;
    Xukf(:,t)=xestimate;
    

    end
    %误差分析
    for i=1:N
    Err_KalmanFilter(i)=Dist(X(:,i),Xukf(:,i));%滤波后的误差
    end
    %画图
    figure
    hold on;box on;
    plot(X(1,:),X(3,:),’-k.’);%真实轨迹
    plot(Xukf(1,:),Xukf(3,:),’-r+’);%无迹卡尔曼滤波轨迹
    legend(‘真实轨迹’,‘UKF轨迹’)
    figure
    hold on; box on;
    plot(Err_KalmanFilter,’-ks’,‘MarkerFace’,‘r’)

    %子函数:求两点间的距离
    function d=Dist(X1,X2)
    if length(X2)<=2
    d=sqrt( (X1(1)-X2(1))^2 + (X1(3)-X2(2))^2 );
    else
    d=sqrt( (X1(1)-X2(1))^2 + (X1(3)-X2(3))^2 );
    end
    %观测子函数:观测距离
    function [y]=hfun(x,xx)
    y=sqrt((x(1)-xx(1))2+(x(3)-xx(2))2);

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120

    跟踪轨迹
    这里写图片描述
    误差曲线
    这里写图片描述

    UKF在匀加速直线运动目标跟踪中的应用

    %  功能说明: UKF在目标跟踪中的应用
    %  参数说明: 1、状态6维,x方向的位置、速度、加速度;
    %               y方向的位置、速度、加速度;
    %            2、观测信息为距离和角度;
    function ukf_for_track_6_div_system
    n=6;%状态维数
    t=0.5;%采用点数
    Q=[1 0 0 0 0 0;
        0 1 0 0 0 0;
        0 0 0.01 0 0 0;
        0 0 0 0.01 0 0;
        0 0 0 0 0.0001 0;
        0 0 0 0 0 0.0001];%过程噪声协方差阵
    R = [100 0;
        0 0.001^2];%量测噪声协方差阵
    %状态方程
    f=@(x)[x(1)+t*x(3)+0.5*t^2*x(5);x(2)+t*x(4)+0.5*t^2*x(6);...
        x(3)+t*x(5);x(4)+t*x(6);x(5);x(6)];
    %x1为X轴位置,x2为Y轴位置,x3、x4分别是X、Y轴的速度,x5、x6为X、Y两方向的加速度
    %观测方程
    h=@(x)[sqrt(x(1)^2+x(2)^2);atan(x(2)/x(1))];
    s=[1000;5000;10;50;2;-4];
    x0=s+sqrtm(Q)*randn(n,1);%初始化状态
    P0 =[100 0 0 0 0 0;
        0 100 0 0 0 0;
        0 0 1 0 0 0;
        0 0 0 1 0 0;
        0 0 0 0 0.1 0;
        0 0 0 0 0 0.1];%初始化协方差
    N=50;%总仿真时间步数,即总时间
    Xukf = zeros(n,N);%UKF滤波状态初始化
    X = zeros(n,N);%真实状态
    Z = zeros(2,N);%测量值
    for i=1:N
        X(:,i)= f(s)+sqrtm(Q)*randn(6,1);%模拟,产生目标运动真实轨迹
        s = X(:,i);
    end
    ux=x0;%ux为中间变量
    for k=1:N
        Z(:,k)= h(X(:,k)) + sqrtm(R)*randn(2,1);%测量值,保存观测
        [Xukf(:,k), P0] = ukf(f,ux,P0,h,Z(:,k),Q,R);%调用ukf滤波算法
        ux=Xukf(:,k);
    end
    %跟踪误差分析
    %这里只分析位置误差,速度、加速度误差分析在此略
    for k=1:N
        RMS(k)=sqrt( (X(1,k)-Xukf(1,k))^2+(X(2,k)-Xukf(2,k))^2 );
    end
    %画图
    figure
    t=1:N;
    hold on;box on;
    plot( X(1,t),X(2,t), 'k-')
    plot(Z(1,t).*cos(Z(2,t)),Z(1,t).*sin(Z(2,t)),'-b.')
    plot(Xukf(1,t),Xukf(2,t),'-r.')
    legend('实际值','测量值','ukf估计值');
    xlabel('x方向位置/米')
    ylabel('y方向位置/米')
    %误差分析图
    figure
    box on;
    plot(RMS,'-ko','MarkerFace','r')
    xlabel('t/秒')
    ylabel('偏差/米')
    

    %UKF子函数
    function [X,P]=ukf(ffun,X,P,hfun,Z,Q,R)
    %非线性系统中UKF算法
    L=numel(X);%状态维数
    m=numel(Z);%观测维数
    alpha=1e-2;%默认系数,参看UT变换,下同
    ki=0;%默认系数
    beta=2;%默认系数
    lambda=alpha^2*(L+ki)-L;%默认系数
    c=L+lambda;%默认系数
    Wm=[lambda/c 0.5/c+zeros(1,2L)];%权值
    Wc=Wm;
    Wc(1)=Wc(1)+(1-alpha^2+beta);%权值
    c=sqrt©;
    %第一步,获取一组sigma点集
    %sigma点集,在状态X附近的点集,X是6
    13矩阵,每列为1样本
    Xsigmaset=sigmas(X,P,c);
    %第二、第三、四步,对sigma点集进行一步预测,得到均值XImeans和方差P1和新sigma点集X1
    %对状态UT变换
    [X1means,X1,P1,X2]=ut(ffun,Xsigmaset,Wm,Wc,L,Q);

    %第五、六步,得到观测预测,Z1为X1集合的预测,Zpre为Z1的均值。
    %Pzz为协方差
    [Zpre,Z1,Pzz,Z2]=ut(hfun,X1,Wm,Wc,m,R);%对观测UT变换
    Pxz=X2diag(Wc)Z2’;%协方差Pxz
    %第七步,计算卡尔曼增益
    K=Pxz
    inv(Pzz);
    %第八步,状态和方差更新
    X=X1means+K
    (Z-Zpre);%状态更新
    P=P1-K*Pxz’;%协方差更新

    %UT变换子函数
    % 输入:fun为函数句柄,Xsigma为样本集,Wm和Wc为权值,n为状态维数(n=6),COV为方差
    % 输出:Xmeans为均值
    function [Xmeans,Xsigma_pre,P,Xdiv]=ut(fun,Xsigma,Wm,Wc,n,COV)
    LL=size(Xsigma,2);%得到Xsigma样本个数
    Xmeans=zeros(n,1);%均值
    Xsigma_pre=zeros(n,LL);
    for k=1:LL
    Xsigma_pre(:,k)=fun(Xsigma(:,k));%一步预测
    Xmeans=Xmeans+Wm(k)Xsigma_pre(:,k);
    end
    Xdiv=Xsigma_pre-Xmeans(:,ones(1,LL));%预测减去均值
    P=Xdiv
    diag(Wc)*Xdiv’+COV;%协方差

    %产生Sigma点集函数
    function Xset=sigmas(X,P,c)
    A = c*chol§’;%Cholesky分解
    Y = X(:,ones(1,numel(X)));
    Xset = [X Y+A Y-A];

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115

    运动轨迹
    这里写图片描述
    跟踪误差
    这里写图片描述

    交互多模型卡尔曼滤波

    在卡尔曼滤波算法中用到了状态转移方程和观测方程,被估计量随时间变化,它是一种动态估计。在目标跟踪中,不必知道目标的运动模型就能够实时的修正目标的状态参量(位置、速度等),具有良好的适应性。但是当目标实施机动时,仅采用基本的卡尔曼滤波算法往往得不到理想的结果。这时需要采用自适应算法。交互多模型IMM是一种软切换算法,目前在机动目标跟踪领域中得到了广泛的应用。IMM算法使用两个或更多的模型来描述工作过程中可能的状态,最后通过有效的加权融合进行系统状态估计,很好地克服了单模型估计误差较大的问题。

    %   交互多模Kalman滤波在目标跟踪中的应用
    %
    function ImmKalman
    clear;
    T=2;%雷达扫描周期,即采样周期
    M=50;%滤波次数
    N=900/T;%总采样点数
    N1=400/T;%第一转弯处采样起点
    N2=600/T;%第一匀速处采样起点
    N3=610/T;%第二转弯处采样起点
    N4=660/T;%第二匀速处采样起点
    Delta=100;%测量噪声标准差
    %对真实的轨迹和观测轨迹数据的初始化
    Rx=zeros(N,1);
    Ry=zeros(N,1);
    Zx=zeros(N,M);
    Zy=zeros(N,M);
    % 1-沿y轴匀速直线
    t=2:T:400;
    x0=2000+0*t';
    y0=10000-15*t';
    % 2-慢转弯
    t=402:T:600;
    x1=x0(N1)+0.075*((t'-400).^2)/2;
    y1=y0(N1)-15*(t'-400)+0.075*((t'-400).^2)/2;
    % 3-匀速
    t=602:T:610;
    vx=0.075*(600-400);
    x2=x1(N2-N1)+vx*(t'-600);
    y2=y1(N2-N1)+0*t';
    % 4-快转弯
    t=612:T:660;
    x3=x2(N3-N2)+(vx*(t'-610)-0.3*((t'-610).^2)/2);
    y3=y2(N3-N2)-0.3*((t'-610).^2)/2;
    % 5-匀速直线
    t=662:T:900;
    vy=-0.3*(660-610);
    x4=x3(N4-N3)+0*t';
    y4=y3(N4-N3)+vy*(t'-660);
    % 最终将所有轨迹整合成为一个列向量,即真实轨迹数据,Rx为Real-x,Ry为Real-y
    Rx=[x0;x1;x2;x3;x4];
    Ry=[y0;y1;y2;y3;y4];
    % 对每次蒙特卡洛仿真的滤波估计位置的初始化
    Mt_Est_Px=zeros(M,N);
    Mt_Est_Py=zeros(M,N);
    % 产生观测数据,要仿真M次,必须有M次
    nx=randn(N,M)*Delta;%产生观测噪声
    ny=randn(N,M)*Delta;
    Zx=Rx*ones(1,M)+nx;%真实值的基础上叠加噪声,即构成计算机模拟的观测值
    Zy=Ry*ones(1,M)+ny;
    for m=1:M
        %滤波初始化
        Mt_Est_Px(m,1)=Zx(1,m);%初始数据
        Mt_Est_Py(m,1)=Zx(2,m);
        xn(1)=Zx(1,m);%滤波初值
        xn(2)=Zx(2,m);
        yn(1)=Zy(1,m);
        yn(2)=Zy(2,m);
        %非机动模型参数
        phi=[1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1];
        h=[1,0,0,0;0,0,1,0];
        g=[T/2,0;1,0;0,T/2;0,1];
        q=[Delta^2,0;0,Delta^2];
        vx=(Zx(2)-Zx(1,m))/2;
        vy=(Zy(2)-Zy(1,m))/2;
        %初始状态估计
        x_est=[Zx(2,m);vx;Zy(2,m);vy];
        p_est=[Delta^2,Delta^2/T,0,0;Delta^2/T,2*Delta^2/(T^2),0,0;
            0,0,Delta^2,Delta^2/T;0,0,Delta^2/T,2*Delta^2/(T^2)];
        Mt_Est_Px(m,2)=x_est(1);
        Mt_Est_Py(m,2)=x_est(3);
        %滤波开始
        for r=3:N
            z=[Zx(r,m);Zy(r,m)];
            if r<20
                x_pre=phi*x_est;%预测
                p_pre=phi*p_est*phi';%预测误差协方差
                k=p_pre*h'*inv(h*p_pre*h'+q);%卡尔曼增益
                x_est=x_pre+k*(z-h*x_pre);%滤波
                p_est=(eye(4)-k*h)*p_pre;%滤波协方差
                xn(r)=x_est(1);%记录采样点滤波数据
                yn(r)=x_est(3);
                Mt_Est_Px(m,r)=x_est(1);%记录第m次仿真滤波估计数据
                Mt_Est_Py(m,r)=x_est(3);
            else
                if r==20
                    X_est=[x_est;0;0];%扩充维数
                    P_est=p_est;
                    P_est(6,6)=0;
                    for i=1:3
                        Xn_est{i,1}=X_est;
                        Pn_est{i,1}=P_est;
                    end
                    u=[0.8,0.1,0.1];%模型概率初始化
                end
                %调用IMM算法
                [X_est,P_est,Xn_est,Pn_est,u]=IMM(Xn_est,Pn_est,T,z,Delta,u);
                xn(r)=X_est(1);
                yn(r)=X_est(3);
                Mt_Est_Px(m,r)=X_est(1);
                Mt_Est_Py(m,r)=X_est(3);
            end
        end
    end
    %结束第一次滤波
    %%%%%%%%%%%%%%%%%%%
    %滤波结果的数据分析
    err_x=zeros(N,1);
    err_y=zeros(N,1);
    delta_x=zeros(N,1);
    delta_y=zeros(N,1);
    %计算滤波的误差均值及标准差
    for r=1:N
        %估计误差均值
        ex=sum(Rx(r)-Mt_Est_Px(:,r));
        ey=sum(Ry(r)-Mt_Est_Py(:,r));
        err_x(r)=ex/M;
        err_y(r)=ey/M;
        eqx=sum((Rx(r)-Mt_Est_Px(:,r)).^2);
        eqy=sum((Ry(r)-Mt_Est_Py(:,r)).^2);
        %估计误差标准差
        delta_x(r)=sqrt(abs(eqx/M-(err_x(r)^2)));
        delta_y(r)=sqrt(abs(eqy/M-(err_y(r)^2)));
    end
    %画图
    figure(1);
    plot(Rx,Ry,'k-',Zx,Zy,'g:',xn,yn,'r-.');
    legend('真实轨迹','观测样本','估计轨迹');
    figure(2);
    subplot(2,1,1);
    plot(err_x);
    %axis([1,N,-300,300]);
    title('x方向估计误差均值');
    subplot(2,1,2);
    plot(err_y);
    %axis([1,N,-300,300]);
    title('y方向估计误差均值');
    figure(3);
    subplot(2,1,1);
    plot(delta_x);
    %axis([1,N,0,1]);
    title('x方向估计误差标准差');
    subplot(2,1,2);
    plot(delta_y);
    %axis([1,N,0,1]);
    title('y方向估计误差标准差');
    

    %% 子函数
    %% X_est,P_est返回第m次仿真第r个采样点的滤波结果
    %% Xn_est,Pn_est记录每个模型对应的第m次仿真第r次仿真第r个采样点的滤波结果
    %% u为模型概率
    function [X_est,P_est,Xn_est,Pn_est,u]=IMM(Xn_est,Pn_est,T,Z,Delta,u)
    %% 控制模型转换的马尔科夫链的转移概率矩阵
    P=[0.95,0.025,0.025;0.025,0.95,0.025;0.025,0.025,0.95];
    %所采用的第三个模型参数,模型一位非机动,模型二、三均为机动模型
    %模型一
    PHI{1,1}=[1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1];
    PHI{1,1}(6,6)=0;
    PHI{2,1}=[1,T,0,0,T2/2,0;0,1,0,0,T,0;0,0,1,T,0,T2/2;
    0,0,0,1,0,T;0,0,0,0,1,0;0,0,0,0,0,1];%模型二
    PHI{3,1}=PHI{2,1};%模型三
    G{1,1}=[T/2,0;1,0;0,T/2;0,1];%模型一
    G{1,1}(6,2)=0;
    G{2,1}=[T2/4,0;T/2,0;0,T2/4;0,T/2;1,0;0,1];%模型二
    G{3,1}=G{2,1};%模型三
    Q{1,1}=zeros(2);%模型一
    Q{2,1}=0.001eye(2);%模型二
    Q{3,1}=0.0114
    eye(2);%模型三
    H=[1,0,0,0,0,0;0,0,1,0,0,0];
    R=eye(2)*Delta^2;%观测噪声协方差阵
    mu=zeros(3,3);%混合概率矩阵
    c_mean=zeros(1,3);%归一化常数
    for i=1:3
    c_mean=c_mean+P(i,:)*u(i);
    end
    for i=1:3
    mu(i,:)=P(i,:)u(i)./c_mean;
    end
    %输入交互
    for j=1:3
    X0{j,1}=zeros(6,1);
    P0{j,1}=zeros(6);
    for i=1:3
    X0{j,1}=X0{j,1}+Xn_est{i,1}mu(i,j);
    end
    for i=1:3
    P0{j,1}=P0{j,1}+mu(i,j)
    ( Pn_est{i,1}…
    +(Xn_est{i,1}-X0{j,1})
    (Xn_est{i,1}-X0{j,1})’);
    end
    end
    %模型条件滤波
    a=zeros(1,3);
    for j=1:3
    %观测预测
    X_pre{j,1}=PHI{j,1}*X0{j,1};
    %协方差预测
    P_pre{j,1}=PHI{j,1}*P0{j,1}*PHI{j,1}’+G{j,1}*Q{j,1}G{j,1}’;
    %计算卡尔曼增益
    K{j,1}=P_pre{j,1}H’inv(HP_pre{j,1}H’+R);
    %状态更新
    Xn_est{j,1}=X_pre{j,1}+K{j,1}
    (Z-H
    X_pre{j,1});
    %协方差更新
    Pn_est{j,1}=(eye(6)-K{j,1}H)P_pre{j,1};
    end
    %模型概率更新
    for j=1:3
    v{j,1}=Z-H
    X_pre{j,1};%新息
    s{j,1}=H
    P_pre{j,1}H’+R;%观测协方差矩阵
    n=length(s{j,1})/2;
    a(1,j)=1/((2
    pi)^n
    sqrt(det(s{j,1})))exp(-0.5v{j,1}’…
    *inv(s{j,1})*v{j,1});%观测相对于模型j的似然函数
    end
    c=sum(a.*c_mean);%归一化常数
    u=a.c_mean./c;%模型概率更新
    %输出交互
    Xn=zeros(6,1);
    Pn=zeros(6);
    for j=1:3
    Xn=Xn+Xn_est{j,1}.u(j);
    end
    for j=1:3
    Pn=Pn+u(j).
    (Pn_est{j,1}+(Xn_est{j,1}-Xn)
    (Xn_est{j,1}-Xn)’);
    end
    %返回滤波结果
    X_est=Xn;
    P_est=Pn;

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226

    目标的真实轨迹、观测轨迹、估计轨迹
    这里写图片描述
    滤波误差的均值曲线
    这里写图片描述
    滤波误差的标准差曲线
    这里写图片描述

                                    </div>
                <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet">
                    </div>
    </article>
    
    <div class="content" style="width: 712px;">
    	<a href="https://blog.csdn.net/qq514218063/article/details/17034813" target="_blank" title="卡尔曼滤波及其MATLAB程序">
    	<h4 class="text-truncate oneline" style="width: 552px;">
    			<em>卡尔曼滤波</em><em>及其</em>MATLAB程序		</h4>
    	<div class="info-box d-flex align-content-center">
    		<p class="date-and-readNum oneline">
    			<span class="date hover-show">11-30</span>
    			<span class="read-num hover-hide">
    				阅读数 
    				2万+</span>
    			</p>
    		</div>
    	</a>
    	<p class="content" style="width: 712px;">
    		<a href="https://blog.csdn.net/qq514218063/article/details/17034813" target="_blank" title="卡尔曼滤波及其MATLAB程序">
    			<span class="desc oneline">今天写了个卡尔曼滤波的小程序,希望对有需要的同学有点帮助。卡尔曼滤波是一个很常用的滤波算法,与维纳滤波相比有很多长处。这里我们把KalmanFilter简称为KF。KF的基本思想是:采用信号、噪声、状...</span>
    		</a>
    		<span class="blog_title_box oneline ">
    								<span class="type-show type-show-blog type-show-after">博文</span>
    										<a target="_blank" href="https://blog.csdn.net/qq514218063">来自:	<span class="blog_title"> 张文宇的博客</span></a>
    											</span>
    	</p>
    </div>
    </div>
    
    <div class="comment-edit-box d-flex">
    	<a id="commentsedit"></a>
    	<div class="user-img">
    		<a href="//me.csdn.net/weixin_43377151" target="_blank">
    			<img class="" src="https://avatar.csdn.net/7/E/3/3_weixin_43377151.jpg">
    		</a>
    	</div>
    	<form id="commentform">
    		<input type="hidden" id="comment_replyId">
    		<textarea class="comment-content" name="comment_content" id="comment_content" placeholder="想对作者说点什么"></textarea>
    		<div class="opt-box"> <!-- d-flex -->
    			<div id="ubbtools" class="add_code">
    				<a href="#insertcode" code="code" target="_self"><i class="icon iconfont icon-daima"></i></a>
    			</div>
    			<input type="hidden" id="comment_replyId" name="comment_replyId">
    			<input type="hidden" id="article_id" name="article_id" value="79264540">
    			<input type="hidden" id="comment_userId" name="comment_userId" value="">
    			<input type="hidden" id="commentId" name="commentId" value="">
    			<div style="display: none;" class="csdn-tracking-statistics tracking-click" data-report-click="{&quot;mod&quot;:&quot;popu_384&quot;,&quot;dest&quot;:&quot;&quot;}"><a href="#" target="_blank" class="comment_area_btn">发表评论</a></div>
    			<div class="dropdown" id="myDrap">
    				<a class="dropdown-face d-flex align-items-center" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
    				<div class="txt-selected text-truncate">添加代码片</div>
    				<svg class="icon d-block" aria-hidden="true">
    					<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-triangledown"></use>
    				</svg>
    				</a>
    				<ul class="dropdown-menu" id="commentCode" aria-labelledby="drop4">
    					<li><a data-code="html">HTML/XML</a></li>
    					<li><a data-code="objc">objective-c</a></li>
    					<li><a data-code="ruby">Ruby</a></li>
    					<li><a data-code="php">PHP</a></li>
    					<li><a data-code="csharp">C</a></li>
    					<li><a data-code="cpp">C++</a></li>
    					<li><a data-code="javascript">JavaScript</a></li>
    					<li><a data-code="python">Python</a></li>
    					<li><a data-code="java">Java</a></li>
    					<li><a data-code="css">CSS</a></li>
    					<li><a data-code="sql">SQL</a></li>
    					<li><a data-code="plain">其它</a></li>
    				</ul>
    			</div>  
    			<div class="right-box">
    				<span id="tip_comment" class="tip">还能输入<em>1000</em>个字符</span>
    				<input type="button" class="btn btn-sm btn-cancel d-none" value="取消回复">
    				<input type="submit" class="btn btn-sm btn-red btn-comment" value="发表评论">
    			</div>
    		</div>
    	</form>
    </div>
    
    	<div class="comment-list-container">
    	<a id="comments"></a>
    	<div class="comment-list-box" style="max-height: 129px; display: block;"><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="10282706" data-replyname="weixin_44007832">        <a target="_blank" href="https://me.csdn.net/weixin_44007832"><img src="https://avatar.csdn.net/2/E/1/3_weixin_44007832.jpg" alt="weixin_44007832" class="avatar"></a>          <div class="right-box ">            <div class="info-box">              <a target="_blank" href="https://me.csdn.net/weixin_44007832"><span class="name ">狗头军师-丁:</span></a>              <span class="comment">预计偏差P的值要开根号吧?</span><span class="date" title="2019-07-30 15:43:41">(3周前</span><span class="floor-num">#9楼)</span><span class="opt-box"><a class="btn btn-link-blue btn-report" data-type="report">举报</a><a class="btn btn-link-blue btn-reply" data-type="reply">回复</a></span></div><div class="comment-like " data-commentid="10282706"><svg class="icon "><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use></svg><span></span></div></div></li></ul><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="9940349" data-replyname="m0_37676429">        <a target="_blank" href="https://me.csdn.net/m0_37676429"><img src="https://avatar.csdn.net/8/9/5/3_m0_37676429.jpg" alt="m0_37676429" class="avatar"></a>          <div class="right-box ">            <div class="info-box">              <a target="_blank" href="https://me.csdn.net/m0_37676429"><span class="name ">leo秋实:</span></a>              <span class="comment">在么大神?收到可以帮忙画个图么?微信电话 15524066346</span><span class="date" title="2019-06-07 07:37:12">(2个月前</span><span class="floor-num">#8楼)</span><span class="opt-box"><a class="btn btn-link-blue btn-report" data-type="report">举报</a><a class="btn btn-link-blue btn-reply" data-type="reply">回复</a></span></div><div class="comment-like " data-commentid="9940349"><svg class="icon "><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use></svg><span></span></div></div></li></ul><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="9823017" data-replyname="weixin_41346819">        <a target="_blank" href="https://me.csdn.net/weixin_41346819"><img src="https://avatar.csdn.net/4/9/C/3_weixin_41346819.jpg" alt="weixin_41346819" class="avatar"></a>          <div class="right-box ">            <div class="info-box">              <a target="_blank" href="https://me.csdn.net/weixin_41346819"><span class="name ">weixin_41346819:</span></a>              <span class="comment">厉害</span><span class="date" title="2019-05-21 16:18:23">(3个月前</span><span class="floor-num">#7楼)</span><span class="opt-box"><a class="btn btn-link-blue btn-report" data-type="report">举报</a><a class="btn btn-link-blue btn-reply" data-type="reply">回复</a></span></div><div class="comment-like " data-commentid="9823017"><svg class="icon "><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use></svg><span></span></div></div></li></ul><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="9615409" data-replyname="weixin_37428348">        <a target="_blank" href="https://me.csdn.net/weixin_37428348"><img src="https://avatar.csdn.net/C/4/9/3_weixin_37428348.jpg" alt="weixin_37428348" class="avatar"></a>          <div class="right-box ">            <div class="info-box">              <a target="_blank" href="https://me.csdn.net/weixin_37428348"><span class="name ">weixin_37428348:</span></a>              <span class="comment">膜拜</span><span class="date" title="2019-04-23 17:49:14">(3个月前</span><span class="floor-num">#6楼)</span><span class="opt-box"><a class="btn btn-link-blue btn-report" data-type="report">举报</a><a class="btn btn-link-blue btn-reply" data-type="reply">回复</a></span></div><div class="comment-like " data-commentid="9615409"><svg class="icon "><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use></svg><span></span></div></div></li></ul><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="8749044" data-replyname="zc2016jiayin">        <a target="_blank" href="https://me.csdn.net/zc2016jiayin"><img src="https://avatar.csdn.net/B/3/1/3_zc2016jiayin.jpg" alt="zc2016jiayin" class="avatar"></a>          <div class="right-box ">            <div class="info-box">              <a target="_blank" href="https://me.csdn.net/zc2016jiayin"><span class="name ">zc2016jiayin:</span></a>              <span class="comment">大佬</span><span class="date" title="2018-11-22 19:30:56">(8个月前</span><span class="floor-num">#5楼)</span><span class="opt-box"><a class="btn btn-link-blue btn-report" data-type="report">举报</a><a class="btn btn-link-blue btn-reply" data-type="reply">回复</a></span></div><div class="comment-like " data-commentid="8749044"><svg class="icon "><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use></svg><span></span></div></div></li></ul><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="8455850" data-replyname="qq_41536517">        <a target="_blank" href="https://me.csdn.net/qq_41536517"><img src="https://avatar.csdn.net/5/3/7/3_qq_41536517.jpg" alt="qq_41536517" class="avatar"></a>          <div class="right-box ">            <div class="info-box">              <a target="_blank" href="https://me.csdn.net/qq_41536517"><span class="name ">qq_41536517:</span></a>              <span class="comment">你好 请问能吧文中UKF有关的函数发给我吗 谢谢   QQ邮箱842755987@qq.com</span><span class="date" title="2018-09-15 17:00:58">(11个月前</span><span class="floor-num">#4楼)</span><span class="opt-box"><a class="btn btn-link-blue btn-report" data-type="report">举报</a><a class="btn btn-link-blue btn-reply" data-type="reply">回复</a></span></div><div class="comment-like " data-commentid="8455850"><svg class="icon "><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use></svg><span></span></div></div></li></ul><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="8455840" data-replyname="qq_41536517">        <a target="_blank" href="https://me.csdn.net/qq_41536517"><img src="https://avatar.csdn.net/5/3/7/3_qq_41536517.jpg" alt="qq_41536517" class="avatar"></a>          <div class="right-box ">            <div class="info-box">              <a target="_blank" href="https://me.csdn.net/qq_41536517"><span class="name ">qq_41536517:</span></a>              <span class="comment">你好 请问能把文中的UKF函数发给我吗?谢谢  QQ邮箱842755987@qq.com。万分感谢</span><span class="date" title="2018-09-15 16:59:58">(11个月前</span><span class="floor-num">#3楼)</span><span class="opt-box"><a class="btn btn-link-blue btn-report" data-type="report">举报</a><a class="btn btn-link-blue btn-reply" data-type="reply">回复</a></span></div><div class="comment-like " data-commentid="8455840"><svg class="icon "><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use></svg><span></span></div></div></li></ul><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="8253312" data-replyname="qq_28137933">        <a target="_blank" href="https://me.csdn.net/qq_28137933"><img src="https://avatar.csdn.net/E/E/1/3_qq_28137933.jpg" alt="qq_28137933" class="avatar"></a>          <div class="right-box ">            <div class="info-box">              <a target="_blank" href="https://me.csdn.net/qq_28137933"><span class="name ">qq_28137933:</span></a>              <span class="comment">你好在吗能帮忙做仿真吗,价格可商量,QQ 1170639733</span><span class="date" title="2018-07-25 15:42:19">(1年前</span><span class="floor-num">#2楼)</span><span class="opt-box"><a class="btn btn-link-blue btn-report" data-type="report">举报</a><a class="btn btn-link-blue btn-reply" data-type="reply">回复</a></span></div><div class="comment-like " data-commentid="8253312"><svg class="icon "><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use></svg><span></span></div></div></li></ul><ul class="comment-list"><li class="comment-line-box d-flex" data-commentid="7982140" data-replyname="qq_42308876">        <a target="_blank" href="https://me.csdn.net/qq_42308876"><img src="https://avatar.csdn.net/E/C/6/3_qq_42308876.jpg" alt="qq_42308876" class="avatar"></a>          <div class="right-box ">            <div class="info-box">              <a target="_blank" href="https://me.csdn.net/qq_42308876"><span class="name ">qq_42308876:</span></a>              <span class="comment">你好 在吗 能留个联系方式吗 有偿服务 非常感谢 或者加我的QQ 178508014</span><span class="date" title="2018-05-25 13:31:14">(1年前</span><span class="floor-num">#1楼)</span><span class="opt-box"><a class="btn btn-link-blue btn-report" data-type="report">举报</a><a class="btn btn-link-blue btn-reply" data-type="reply">回复</a></span></div><div class="comment-like " data-commentid="7982140"><svg class="icon "><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use></svg><span></span></div></div></li></ul></div>
    	<div id="commentPage" class="pagination-box d-none" style="display: block;"><div id="Paging_09241115303493994" class="ui-paging-container"><ul><li class="js-page-first js-page-action ui-pager ui-pager-disabled"></li><li class="js-page-prev js-page-action ui-pager ui-pager-disabled">上一页</li><li data-page="1" class="ui-pager focus">1</li><li class="js-page-next js-page-action ui-pager ui-pager-disabled">下一页</li><li class="js-page-last js-page-action ui-pager ui-pager-disabled"></li></ul></div></div>
    	<div class="opt-box text-center">
    		<div class="btn btn-sm btn-link-blue" id="btnMoreComment"><span>查看 9 条热评</span><svg class="icon open" aria-hidden="true"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-chevrondown"></use></svg></div>
    	</div>
    </div>
    

    卡尔曼滤波简介说明及其算法MATLAB实现代码

    04-18 阅读数 1万+

    卡尔曼滤波算法,很经典而且易懂,值得看。 博文 来自: qqh19910525的博客

    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_59" data-pid="59" data-report-view="{&quot;mod&quot;:&quot;kp_popu_59-78&quot;,&quot;keyword&quot;:&quot;&quot;}" data-report-click="{&quot;mod&quot;:&quot;kp_popu_59-78&quot;,&quot;keyword&quot;:&quot;&quot;}"><script type="text/javascript">
    (function() {
        var s = "_" + Math.random().toString(36).slice(2);
        document.write('<div style="" id="' + s + '"></div>');
        (window.slotbydup = window.slotbydup || []).push({
            id: "u3491668",
            container:  s
        });
    })();
    

    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_36750643/10239768&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;5&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_36750643/10239768&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;5&quot;}">
    	<a href="https://download.csdn.net/download/qq_36750643/10239768" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					<em>卡尔曼滤波</em>的<em>MATLAB实现</em>					</h4>
    				<span class="data float-right">02-04</span>
    			</div>
    			<div class="desc oneline">
    					卡尔曼滤波的MATLAB实现。包括代码及详细说明,画出了各种不同的曲线。				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    
    
    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_44044161/11050393&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;6&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_44044161/11050393&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;6&quot;}">
    	<a href="https://download.csdn.net/download/weixin_44044161/11050393" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					<em>卡尔曼滤波</em>器matlab					</h4>
    				<span class="data float-right">03-22</span>
    			</div>
    			<div class="desc oneline">
    					关于kf的matlab程序,仿真实列为目标耿总问题,调用kf函数,实现滤波平滑				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    
    
    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_35632833/10876623&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;7&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_35632833/10876623&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;7&quot;}">
    	<a href="https://download.csdn.net/download/qq_35632833/10876623" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					<em>卡尔曼滤波</em>-Matlab程序					</h4>
    				<span class="data float-right">12-26</span>
    			</div>
    			<div class="desc oneline">
    					卡尔曼滤波程序Matlab实现。 Kalman滤波在测量方差已知的情况下能够从一系列存在测量噪声的数据中,估计动态系统的状态. 由于, 它便于计算机编程实现, 并能够对现场采集的数据进行实时的更新和处				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    
    
    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/linjieli_uestc/10770753&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;8&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/linjieli_uestc/10770753&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;8&quot;}">
    	<a href="https://download.csdn.net/download/linjieli_uestc/10770753" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					<em>卡尔曼滤波</em> Matlab程序					</h4>
    				<span class="data float-right">11-07</span>
    			</div>
    			<div class="desc oneline">
    					代码为书籍《卡尔曼滤波原理及应用》配套的代码,可用于卡尔曼滤波的学习				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/90769550&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;1&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/90769550&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;1&quot;}" data-track-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/90769550&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:0,&quot;extend1&quot;:&quot;_&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/90769550&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:0,&quot;extend1&quot;:&quot;_&quot;}" data-flg="true">                <a href="https://blog.csdn.net/zhangquan2015/article/details/90769550" target="_blank">              		<h4 class="text-truncate oneline" style="width: 622px;">CMakeLists编写 - Joey's Blog - CSDN博客</h4>                  <div class="info-box d-flex align-content-center">                    <p>                      <span class="date">6-17</span>                    </p>                  </div>                </a>            	</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/52137892&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;2&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/52137892&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;2&quot;}" data-track-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/52137892&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:1,&quot;extend1&quot;:&quot;_&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/52137892&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:1,&quot;extend1&quot;:&quot;_&quot;}" data-flg="true">                <a href="https://blog.csdn.net/zhangquan2015/article/details/52137892" target="_blank">              		<h4 class="text-truncate oneline" style="width: 622px;">基于Qt的QQ局域网聊天 - Joey's Blog - CSDN博客</h4>                  <div class="info-box d-flex align-content-center">                    <p>                      <span class="date">5-29</span>                    </p>                  </div>                </a>            	</div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_60" data-pid="60" data-report-view="{&quot;mod&quot;:&quot;kp_popu_60-43&quot;,&quot;keyword&quot;:&quot;&quot;}" data-report-click="{&quot;mod&quot;:&quot;kp_popu_60-43&quot;,&quot;keyword&quot;:&quot;&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1566442796312_460" id="QIHOO__WEB__SO__1566442796312_460" style="display:block;margin:0;padding:0;border:none;width:900px;height:84px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1566442796312_460-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1566442796312_460 singleImage clk" data-href="https://s3.nzbdw.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABPZZFTQgAAk1Flj0A&amp;mvid=NzQyMDc0MDQyMTMwNTEyMjQwMjAwMTk&amp;bid=138b26aa9a90a369&amp;price=AAAAAF1eBSoAAAAAAAfavl/y6Ve50+eWfKL4qg==&amp;finfo=DAABCAABAAAAcQgAAgAAADcEAAM/YEDmNtDrOQAIAAIAAAADCgADTvv3UV+5cI8IAAQAAAA5BgAGLbcGAAoAAAgADgAAAB0KAA8AAAAAABE+EAA&amp;ugi=FcTgigEVyNtrTBUCFc4EFdoEFQAAFeGl/PUIFoQIFcgBFoD64KT8qsgFHBaNy7+FvZqH/8wBFQAAAA&amp;uai=FeTGlAIlAhUEFoCo1s20jvf7nQEV8ggllOq16A0lABUaFAAcFuPHo72Kx6qTzgEVAAAA&amp;ubi=FcidXBXKt+wCFay07hgV+Oz4WxUEFRwW/On9uhcWgKjrtL7U+/udATQCFrDgkIAIJQYVlImR0QwVwgUVADac87WxjaeY2xEA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=PmQ_DH6pDm2=&amp;url=http%3A%2F%2Fvip.qooo9.cn" data-pv="https://s3.nzbdw.com/s?type=1&amp;r=20&amp;tid=NzQyMDc0MDQyMTMwNTEyMjQwMjAwMTk&amp;finfo=DAABCAABAAAAcQgAAgAAADcEAAM/YEDmNtDrOQAIAAIAAAADCgADTvv3UV+5cI8IAAQAAAA5BgAGLbcGAAoAAAgADgAAAB0KAA8AAAAAABE+EAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABPZZFTQgAAk1Flj0A&amp;mvid=NzQyMDc0MDQyMTMwNTEyMjQwMjAwMTk&amp;bid=138b26aa9a90a369&amp;ugi=FcTgigEVyNtrTBUCFc4EFdoEFQAAFeGl/PUIFoQIFcgBFoD64KT8qsgFHBaNy7+FvZqH/8wBFQAAAA&amp;uai=FeTGlAIlAhUEFoCo1s20jvf7nQEV8ggllOq16A0lABUaFAAcFuPHo72Kx6qTzgEVAAAA&amp;ubi=FcidXBXKt+wCFay07hgV+Oz4WxUEFRwW/On9uhcWgKjrtL7U+/udATQCFrDgkIAIJQYVlImR0QwVwgUVADac87WxjaeY2xEA&amp;ds=1&amp;price=AAAAAF1eBSoAAAAAAAfavl/y6Ve50+eWfKL4qg==,https://max-l.mediav.com/rtb?type=2&amp;ver=1&amp;v=CGQSEDEzOGIyNmFhOWE5MGEzNjkYsqOKASCisEUoAWIXNzQyMDc0MDQyMTMwNTEyMjQwMjAwMTmIAQA&amp;k=dVpuYQAAAAA=&amp;w=AAAAAF1eBSoAAAAAAAfa_AYIGcMC0una83tE2w&amp;i=5IvvYcy7TDZn&amp;exp=BQBECgBEAQJEBAJEEABDIgBD&amp;z=1" data-clk="https://max-l.mediav.com/rtb?type=3&amp;ver=1&amp;v=CGQSEDEzOGIyNmFhOWE5MGEzNjkYsqOKASCisEUoAWIXNzQyMDc0MDQyMTMwNTEyMjQwMjAwMTlwAA&amp;k=/nutgAAAAAA=&amp;i=5IvvYcy7TDZn&amp;exp=BQBECgBEAQJEBAJEEABDIgBD&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;adw=__ADSPACE_W__&amp;adh=__ADSPACE_H__&amp;tc=&amp;turl=">
    <info-div class="wrap">
        <info-div class="singleImage-img singleImage-img-left">
            <info-div class="img" style="background-image:url(https://s3m.nzwgs.com/galileo/755556-ffee2684cc43e378e978f83373b7b3d8.jpg)"><info-div class="ads-tag"></info-div></info-div>
        </info-div>
        <info-div class="singleImage-body singleImage-body-left">
            <info-div class="singleImage-title">老中医说:饭后用一物,变易瘦体质,想瘦多少就瘦多少</info-div>
            <info-div class="singleImage-desc">江汇 · 猎媒</info-div>
        </info-div>
    
    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/yueroo/11150561&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;9&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/yueroo/11150561&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;9&quot;}">
    	<a href="https://download.csdn.net/download/yueroo/11150561" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					<em>卡尔曼滤波</em><em>MATLAB实现</em>					</h4>
    				<span class="data float-right">04-29</span>
    			</div>
    			<div class="desc oneline">
    					详细介绍了卡尔曼滤波原理,对卡尔曼滤波进行了MATLAB仿真设计				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/83183540&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;3&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/83183540&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;3&quot;}" data-track-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/83183540&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:2,&quot;extend1&quot;:&quot;_&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/83183540&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:2,&quot;extend1&quot;:&quot;_&quot;}" data-flg="true">                <a href="https://blog.csdn.net/zhangquan2015/article/details/83183540" target="_blank">              		<h4 class="text-truncate oneline" style="width: 631px;">正则表达式验证合法电话号码 - Joey's Blog - CSDN博客</h4>                  <div class="info-box d-flex align-content-center">                    <p>                      <span class="date">4-1</span>                    </p>                  </div>                </a>            	</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/52138303&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;4&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/52138303&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;4&quot;}" data-track-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/52138303&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:3,&quot;extend1&quot;:&quot;_&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/52138303&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:3,&quot;extend1&quot;:&quot;_&quot;}" data-flg="true">                <a href="https://blog.csdn.net/zhangquan2015/article/details/52138303" target="_blank">              		<h4 class="text-truncate oneline" style="width: 622px;">Qt双击表格获取表格内容 - Joey's Blog - CSDN博客</h4>                  <div class="info-box d-flex align-content-center">                    <p>                      <span class="date">6-13</span>                    </p>                  </div>                </a>            	</div>
    
    		<div class="recommend-item-box blog-expert-recommend-box" style="display: block;">
    		<div class="d-flex">
    			<div class="blog-expert-recommend">
    				<div class="blog-expert">
    					<div class="blog-expert-flexbox" data-report-view="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/79264540&quot;}"><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/79264540&quot;}"><a href="https://blog.csdn.net/qq514218063" target="_blank"><img src="https://avatar.csdn.net/4/F/B/3_qq514218063.jpg" alt="babybabytellmewhy" title="babybabytellmewhy"></a><span data-report-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/79264540&quot;}"><span class="blog-expert-button-follow btn-red-follow" data-name="qq514218063" data-nick="babybabytellmewhy">关注</span></span></div><div class="info"><span data-report-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/79264540&quot;}"><a href="https://blog.csdn.net/qq514218063" target="_blank"><h5 class="oneline" title="babybabytellmewhy">babybabytellmewhy</h5></a></span>  <p></p><p class="article-num" title="6篇文章"> 6篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/79264540&quot;}"><a href="https://blog.csdn.net/OUYANG_LINUX007" target="_blank"><img src="https://avatar.csdn.net/B/4/3/3_ouyang_linux007.jpg" alt="OUYANG_LINUX007" title="OUYANG_LINUX007"></a><span data-report-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/79264540&quot;}"><span class="blog-expert-button-follow btn-red-follow" data-name="OUYANG_LINUX007" data-nick="OUYANG_LINUX007">关注</span></span></div><div class="info"><span data-report-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/79264540&quot;}"><a href="https://blog.csdn.net/OUYANG_LINUX007" target="_blank"><h5 class="oneline" title="OUYANG_LINUX007">OUYANG_LINUX007</h5></a></span>  <p></p><p class="article-num" title="66篇文章"> 66篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/79264540&quot;}"><a href="https://blog.csdn.net/qqh19910525" target="_blank"><img src="https://avatar.csdn.net/6/D/C/3_qqh19910525.jpg" alt="如梦如幻2015" title="如梦如幻2015"></a><span data-report-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/79264540&quot;}"><span class="blog-expert-button-follow btn-red-follow" data-name="qqh19910525" data-nick="如梦如幻2015">关注</span></span></div><div class="info"><span data-report-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/79264540&quot;}"><a href="https://blog.csdn.net/qqh19910525" target="_blank"><h5 class="oneline" title="如梦如幻2015">如梦如幻2015</h5></a></span>  <p></p><p class="article-num" title="125篇文章"> 125篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/79264540&quot;}"><a href="https://blog.csdn.net/worldbit" target="_blank"><img src="https://avatar.csdn.net/9/C/D/3_worldbit.jpg" alt="worldbit" title="worldbit"></a><span data-report-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/79264540&quot;}"><span class="blog-expert-button-follow btn-red-follow" data-name="worldbit" data-nick="worldbit">关注</span></span></div><div class="info"><span data-report-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/79264540&quot;}"><a href="https://blog.csdn.net/worldbit" target="_blank"><h5 class="oneline" title="worldbit">worldbit</h5></a></span>  <p></p><p class="article-num" title="8篇文章"> 8篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div></div>
    				</div>
    			</div>
    		</div>
    	</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/76379164&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;5&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/76379164&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;5&quot;}" data-track-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/76379164&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:4,&quot;extend1&quot;:&quot;_&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/76379164&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:4,&quot;extend1&quot;:&quot;_&quot;}" data-flg="true">                <a href="https://blog.csdn.net/zhangquan2015/article/details/76379164" target="_blank">              		<h4 class="text-truncate oneline" style="width: 622px;">OpenCV学习之图像尺寸变换 - Joey's Blog - CSDN博客</h4>                  <div class="info-box d-flex align-content-center">                    <p>                      <span class="date">3-18</span>                    </p>                  </div>                </a>            	</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/81347392&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;6&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/81347392&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;6&quot;}" data-track-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/81347392&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:5,&quot;extend1&quot;:&quot;_&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/81347392&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:5,&quot;extend1&quot;:&quot;_&quot;}" data-flg="true">                <a href="https://blog.csdn.net/zhangquan2015/article/details/81347392" target="_blank">              		<h4 class="text-truncate oneline" style="width: 622px;">C++网络通信实现 - Joey's Blog - CSDN博客</h4>                  <div class="info-box d-flex align-content-center">                    <p>                      <span class="date">8-12</span>                    </p>                  </div>                </a>            	</div>
    

    OpenCV学习之金字塔及其应用 - Joey's Blog - CSDN博客

    5-20

    第6章 最简单的界面化程序——对话框 - Joey's Blog - CSDN博客

    7-10

    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_61" data-pid="61" data-report-view="{&quot;mod&quot;:&quot;kp_popu_61-622&quot;,&quot;keyword&quot;:&quot;&quot;}" data-report-click="{&quot;mod&quot;:&quot;kp_popu_61-622&quot;,&quot;keyword&quot;:&quot;&quot;}"><div id="_irqkblbi1a8pu6kcka0b2o6r" style="width: 100%;"><div id="axytgfh" style="padding-right:0px;"><iframe width="852" frameborder="0" height="66" scrolling="no" src="https://pos.baidu.com/s?hei=66&amp;wid=852&amp;di=u3600846&amp;ltu=https%3A%2F%2Fblog.csdn.net%2Fzhangquan2015%2Farticle%2Fdetails%2F79264540&amp;psi=1f283c47c9792b12ed499c54965f226d&amp;cja=false&amp;pss=1858x45709&amp;ti=%E5%8D%A1%E5%B0%94%E6%9B%BC%E6%BB%A4%E6%B3%A2%E5%BA%94%E7%94%A8%E5%8F%8A%E5%85%B6matlab%E5%AE%9E%E7%8E%B0&amp;pis=-1x-1&amp;ari=2&amp;dis=0&amp;prot=2&amp;dtm=HTML_POST&amp;ant=0&amp;chi=1&amp;ps=43749x580&amp;cdo=-1&amp;psr=1920x1080&amp;cmi=6&amp;drs=1&amp;exps=111000,119009,110011&amp;par=1920x1040&amp;tpr=1566442796618&amp;col=zh-CN&amp;dc=3&amp;cce=true&amp;pcs=1858x920&amp;ccd=24&amp;cec=UTF-8&amp;cpl=4&amp;cfv=0&amp;dri=0&amp;ltr=https%3A%2F%2Fblog.csdn.net%2FAsc11_%2Farticle%2Fdetails%2F40714239&amp;tcn=1566442797&amp;tlm=1566442796&amp;dai=5"></iframe><div style="display:none;padding-right:0px;"></div></div></div><script type="text/javascript" src="//rabc1.iteye.com/common/web/production/79m9.js?f=aszggcwz"></script></div></div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/91537827&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;9&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/91537827&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;9&quot;}" data-track-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/91537827&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:8,&quot;extend1&quot;:&quot;_&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/91537827&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:8,&quot;extend1&quot;:&quot;_&quot;}" data-flg="true">                <a href="https://blog.csdn.net/zhangquan2015/article/details/91537827" target="_blank">              		<h4 class="text-truncate oneline" style="width: 631px;">CMake交叉编译 - Joey's Blog - CSDN博客</h4>                  <div class="info-box d-flex align-content-center">                    <p>                      <span class="date">7-1</span>                    </p>                  </div>                </a>            	</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/80160864&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;10&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/80160864&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:&quot;10&quot;}" data-track-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/80160864&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:9,&quot;extend1&quot;:&quot;_&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/zhangquan2015/article/details/80160864&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;index&quot;:9,&quot;extend1&quot;:&quot;_&quot;}" data-flg="true">                <a href="https://blog.csdn.net/zhangquan2015/article/details/80160864" target="_blank">              		<h4 class="text-truncate oneline" style="width: 631px;">C语言实现图像的读写旋转与缩放 - Joey's Blog - CSDN博客</h4>                  <div class="info-box d-flex align-content-center">                    <p>                      <span class="date">8-7</span>                    </p>                  </div>                </a>            	</div>
    
    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_27432295/10268791&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;15&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_27432295/10268791&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;15&quot;}">
    	<a href="https://download.csdn.net/download/qq_27432295/10268791" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					扩展<em>卡尔曼滤波</em>程序示例(matlab)					</h4>
    				<span class="data float-right">03-04</span>
    			</div>
    			<div class="desc oneline">
    					matlab写的一个扩展卡尔曼滤波程序,状态方程为线性,观测方程非线性,最后输出图片以便观察是否收敛,分享给大家参考。还有一个C++版本的。				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    
    
    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/yuchuan3912/1503931&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;16&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/yuchuan3912/1503931&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;16&quot;}">
    	<a href="https://download.csdn.net/download/yuchuan3912/1503931" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					<em>卡尔曼滤波</em>matlab工具箱					</h4>
    				<span class="data float-right">07-20</span>
    			</div>
    			<div class="desc oneline">
    					一个国外网站上的程序包,里面有很成熟的算法,包括简单的例子介绍,相信对用卡尔曼滤波技术的朋友会有很大帮助				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    
    
    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_16006651/10180710&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;17&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_16006651/10180710&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;17&quot;}">
    	<a href="https://download.csdn.net/download/qq_16006651/10180710" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					<em>卡尔曼滤波</em>Matlab					</h4>
    				<span class="data float-right">12-29</span>
    			</div>
    			<div class="desc oneline">
    					在Matlab里面,描述的卡尔曼滤波。清楚的描述了卡尔曼滤波的表达试				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_62" data-pid="62" data-report-view="{&quot;mod&quot;:&quot;kp_popu_62-623&quot;,&quot;keyword&quot;:&quot;&quot;}" data-report-click="{&quot;mod&quot;:&quot;kp_popu_62-623&quot;,&quot;keyword&quot;:&quot;&quot;}"><script type="text/javascript">
    (function() {
        var s = "_" + Math.random().toString(36).slice(2);
        document.write('<div style="" id="' + s + '"></div>');
        (window.slotbydup = window.slotbydup || []).push({
            id: "u3600849",
            container:  s
        });
    })();
    

    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/renzhu2007/3111646&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;23&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/renzhu2007/3111646&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;23&quot;}">
    	<a href="https://download.csdn.net/download/renzhu2007/3111646" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					姿态确定的扩展<em>卡尔曼滤波</em>Matlab					</h4>
    				<span class="data float-right">03-21</span>
    			</div>
    			<div class="desc oneline">
    					在姿态确定的四元数方程基础上,采用扩展卡尔曼滤波				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_63" data-pid="63" data-report-view="{&quot;mod&quot;:&quot;kp_popu_63-1405&quot;,&quot;keyword&quot;:&quot;&quot;}" data-report-click="{&quot;mod&quot;:&quot;kp_popu_63-1405&quot;,&quot;keyword&quot;:&quot;&quot;}"><script type="text/javascript">
        (function() {
            var s = "_" + Math.random().toString(36).slice(2);
            document.write('<div style="" id="' + s + '"></div>');
            (window.slotbydup = window.slotbydup || []).push({
                id: "u4221910",
                container: s
            });
        })();
    

    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_38490273/10296005&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;24&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_38490273/10296005&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;24&quot;}">
    	<a href="https://download.csdn.net/download/qq_38490273/10296005" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					<em>卡尔曼滤波</em>MATLAB代码					</h4>
    				<span class="data float-right">03-19</span>
    			</div>
    			<div class="desc oneline">
    					国外学者的开源卡尔曼滤波MATLAB代码,备注详细,可以用于目标跟踪基础学习				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    
    
    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/master03/10337780&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;25&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/master03/10337780&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;25&quot;}">
    	<a href="https://download.csdn.net/download/master03/10337780" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					经典<em>卡尔曼滤波</em> 目标跟踪 matlab 程序注释详细 新手入门					</h4>
    				<span class="data float-right">04-10</span>
    			</div>
    			<div class="desc oneline">
    					经典卡尔曼滤波 目标跟踪 程序注释详细 新手入门 matlab 程序无bug 完美运行 重要的事情说三遍!包教包会 包教包会 包教包会!				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    
    
    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/linhaiyan927/1791062&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;26&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/linhaiyan927/1791062&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;26&quot;}">
    	<a href="https://download.csdn.net/download/linhaiyan927/1791062" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					<em>卡尔曼滤波</em>器MATLAB编程实现					</h4>
    				<span class="data float-right">11-03</span>
    			</div>
    			<div class="desc oneline">
    					矢量卡尔曼滤波器的MATLAB编程实现 利用卡尔曼滤波器实现去噪功能				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_64" data-pid="64" data-report-view="{&quot;mod&quot;:&quot;kp_popu_64-1379&quot;,&quot;keyword&quot;:&quot;&quot;}" data-report-click="{&quot;mod&quot;:&quot;kp_popu_64-1379&quot;,&quot;keyword&quot;:&quot;&quot;}"><script type="text/javascript">
        (function() {
            var s = "_" + Math.random().toString(36).slice(2);
            document.write('<div style="" id="' + s + '"></div>');
            (window.slotbydup = window.slotbydup || []).push({
                id: "u4221811",
                container: s
            });
        })();
    

    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/u011254129/10243082&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;32&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/u011254129/10243082&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;32&quot;}">
    	<a href="https://download.csdn.net/download/u011254129/10243082" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					<em>卡尔曼滤波</em>工具箱					</h4>
    				<span class="data float-right">02-06</span>
    			</div>
    			<div class="desc oneline">
    					matlab的卡尔曼工具箱,利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    
    
    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/u014731502/7197251&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;33&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/u014731502/7197251&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;33&quot;}">
    	<a href="https://download.csdn.net/download/u014731502/7197251" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					<em>卡尔曼滤波</em>与<em>matlab实现</em>					</h4>
    				<span class="data float-right">04-15</span>
    			</div>
    			<div class="desc oneline">
    					卡尔曼滤波入门,一个典型例子,并有matlab代码,适合新手				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_65" data-pid="65" data-report-view="{&quot;mod&quot;:&quot;kp_popu_65-1378&quot;,&quot;keyword&quot;:&quot;&quot;}" data-report-click="{&quot;mod&quot;:&quot;kp_popu_65-1378&quot;,&quot;keyword&quot;:&quot;&quot;}"><script type="text/javascript">
        (function() {
            var s = "_" + Math.random().toString(36).slice(2);
            document.write('<div style="" id="' + s + '"></div>');
            (window.slotbydup = window.slotbydup || []).push({
                id: "u4221803",
                container: s
            });
        })();
    

    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/hobbyjobs/9921989&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;34&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/hobbyjobs/9921989&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;34&quot;}">
    	<a href="https://download.csdn.net/download/hobbyjobs/9921989" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					<em>卡尔曼滤波</em>原理及<em>应用</em> matlab仿真					</h4>
    				<span class="data float-right">08-05</span>
    			</div>
    			<div class="desc oneline">
    					卡尔曼滤波原理及应用 matlab仿真 黄小平,完整pdf外加matlab源码,很多地方都只提供部分内容				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    
    
    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/ysudykx/10041138&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;35&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/ysudykx/10041138&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;35&quot;}">
    	<a href="https://download.csdn.net/download/ysudykx/10041138" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					<em>卡尔曼滤波</em>算法MATLAB仿真					</h4>
    				<span class="data float-right">10-26</span>
    			</div>
    			<div class="desc oneline">
    					离散卡尔曼滤波算法MATLAB仿真,带有详细注释,有联系方式可以交流。				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_66" data-pid="66" data-report-view="{&quot;mod&quot;:&quot;kp_popu_66-87&quot;,&quot;keyword&quot;:&quot;&quot;}" data-report-click="{&quot;mod&quot;:&quot;kp_popu_66-87&quot;,&quot;keyword&quot;:&quot;&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1566442796700_717" id="QIHOO__WEB__SO__1566442796700_717" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1566442796700_717-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1566442796700_717 singleImage clk" data-href="https://s3.nzbdw.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABPZZFTQgAAk1Flj0A&amp;mvid=NzQyMDc0MDQyMTMwNTEyMjQwMjAwMTk&amp;bid=138b26aa9a90a369&amp;price=AAAAAF1eBSoAAAAAAAfbqX6fMz8zM1GYn146iA==&amp;finfo=DAABCAABAAAAYQgAAgAAAC0EAAM/YO9ms67EtQAIAAIAAAADCgADTvwAarR6HTYIAAQAAAAvBgAGLbcGAAoAAAYADD64CAAOAAAAHQoADwAAAAAAEHrCAA&amp;ugi=FcTgigEVyNtrTBUCFc4EFdoEFQAAFeGl/PUIFoQIFcgBFoD64KT8qsgFHBaNy7+FvZqH/8wBFQAAAA&amp;uai=FeTGlAIlAhUEFoCo1s20jvf7nQEV8ggllOq16A0lABUaFAAcFuPHo72Kx6qTzgEVAAAA&amp;ubi=FY7hQxW8lu8CFYyP+RgVzpmKXBUEFRwWsN6Y3BYWgKiAnMiagPydATQEFrDgkIAIJQYVjcSC6QsVwgUVADaW7ra7hIyXkPUBAA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=kUBAKWT_R5o=&amp;url=http%3A%2F%2Fmuscdlb.bceapp.com%2F2010xls%2Fm2%2F" data-pv="https://s3.nzbdw.com/s?type=1&amp;r=20&amp;tid=NzQyMDc0MDQyMTMwNTEyMjQwMjAwMTk&amp;finfo=DAABCAABAAAAYQgAAgAAAC0EAAM/YO9ms67EtQAIAAIAAAADCgADTvwAarR6HTYIAAQAAAAvBgAGLbcGAAoAAAYADD64CAAOAAAAHQoADwAAAAAAEHrCAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABPZZFTQgAAk1Flj0A&amp;mvid=NzQyMDc0MDQyMTMwNTEyMjQwMjAwMTk&amp;bid=138b26aa9a90a369&amp;ugi=FcTgigEVyNtrTBUCFc4EFdoEFQAAFeGl/PUIFoQIFcgBFoD64KT8qsgFHBaNy7+FvZqH/8wBFQAAAA&amp;uai=FeTGlAIlAhUEFoCo1s20jvf7nQEV8ggllOq16A0lABUaFAAcFuPHo72Kx6qTzgEVAAAA&amp;ubi=FY7hQxW8lu8CFYyP+RgVzpmKXBUEFRwWsN6Y3BYWgKiAnMiagPydATQEFrDgkIAIJQYVjcSC6QsVwgUVADaW7ra7hIyXkPUBAA&amp;ds=2&amp;price=AAAAAF1eBSoAAAAAAAfbqX6fMz8zM1GYn146iA==,https://max-l.mediav.com/rtb?type=2&amp;ver=1&amp;v=CGQSEDEzOGIyNmFhOWE5MGEzNjkYsqOKASCisEUoAmIXNzQyMDc0MDQyMTMwNTEyMjQwMjAwMTmIAQA&amp;k=XPdRDAAAAAA=&amp;w=AAAAAF1eBSoAAAAAAAfb4Gmmo-NlSscYeW0g3A&amp;i=5zwvYcy7TDh0&amp;exp=BQBECgBEAQJEBAJEEABDIgBD&amp;z=1" data-clk="https://max-l.mediav.com/rtb?type=3&amp;ver=1&amp;v=CGQSEDEzOGIyNmFhOWE5MGEzNjkYsqOKASCisEUoAmIXNzQyMDc0MDQyMTMwNTEyMjQwMjAwMTlwAA&amp;k=1tSj6gAAAAA=&amp;i=5zwvYcy7TDh0&amp;exp=BQBECgBEAQJEBAJEEABDIgBD&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;adw=__ADSPACE_W__&amp;adh=__ADSPACE_H__&amp;tc=&amp;turl=">
    <info-div class="wrap">
        <info-div class="singleImage-img singleImage-img-left">
            <info-div class="img" style="background-image:url(https://s3m.nzwgs.com/galileo/bfddcc01e23433460023d950b9c7911d.gif)"><info-div class="ads-tag"></info-div></info-div>
        </info-div>
        <info-div class="singleImage-body singleImage-body-left">
            <info-div class="singleImage-title">空姐说:99元体验男朋友轻松延长40分钟,多吃它,你也行!</info-div>
            <info-div class="singleImage-desc">梦雨 · 猎媒</info-div>
        </info-div>
    

    【教程】“视频教程:卡尔曼滤波器的原理以及在MATLAB中的实现”原代码在matlab下不显示曲线的解决办法

    05-13 阅读数 825

    一、先看原视频教程来源:原博客地址(@山猫小队长): 视频地址整理:优酷:http://v.youku.com/v_show/id_XNzQwMTMwOTQ0.htmlB站:https://www.b... 博文 来自: 柠檬很酸的博客

    matlab 实现语音增强(含维纳滤波、谱减法、卡尔曼滤波三种实现方法)下载

    05-19

    有完整的代码注释,三种方法都可以实现,并有demo音频。 相关下载链接://download.csdn.net/download/everock/10424395?utm_source=bbsseo 论坛

    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/bbluce99/1949738&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;43&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/bbluce99/1949738&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;43&quot;}">
    	<a href="https://download.csdn.net/download/bbluce99/1949738" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					kalman滤波、平滑和预测 MATLAB程序					</h4>
    				<span class="data float-right">12-30</span>
    			</div>
    			<div class="desc oneline">
    					编的很完善的kalman滤波、平滑以及预测MATLAB程序。希望对大家有用,尤其是在校大学生。				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_67" data-pid="67" data-report-view="{&quot;mod&quot;:&quot;kp_popu_67-658&quot;,&quot;keyword&quot;:&quot;&quot;}" data-report-click="{&quot;mod&quot;:&quot;kp_popu_67-658&quot;,&quot;keyword&quot;:&quot;&quot;}"><script type="text/javascript">
    (function() {
        var s = "_" + Math.random().toString(36).slice(2);
        document.write('<div style="" id="' + s + '"></div>');
        (window.slotbydup = window.slotbydup || []).push({
            id: "u3573058",
            container:  s
        });
    })();
    

    <div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/Inuyasha19/2035348&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;44&quot;}" data-report-click="{&quot;mod&quot;:&quot;popu_614&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/Inuyasha19/2035348&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;index&quot;:&quot;44&quot;}">
    	<a href="https://download.csdn.net/download/Inuyasha19/2035348" target="_blank">
    		<div class="content clearfix">
    			<div class="">
    				<h4 class="text-truncate oneline clearfix">
    					基于<em>卡尔曼滤波</em>的目标跟踪matlab经典程序——快速入门					</h4>
    				<span class="data float-right">01-30</span>
    			</div>
    			<div class="desc oneline">
    					基于卡尔曼滤波的目标跟踪经典程序,用于2维目标的跟踪,是初学者学习卡尔曼滤波的好教程。深入浅出,易于理解。				</div>
    			<span class="type-show type-show-download">下载</span>
    		</div>
    	</a>
    </div>
    
    <div class="recommend-item-box recommend-ad-box"><div id="kp_box_68" data-pid="68" data-report-view="{&quot;mod&quot;:&quot;kp_popu_68-625&quot;,&quot;keyword&quot;:&quot;&quot;}" data-report-click="{&quot;mod&quot;:&quot;kp_popu_68-625&quot;,&quot;keyword&quot;:&quot;&quot;}"><div style="width: 100%;"><span style="display:none;padding-left:0px;"></span><iframe width="852" frameborder="0" height="60" scrolling="no" src="https://pos.baidu.com/s?hei=60&amp;wid=852&amp;di=u3565460&amp;ltu=https%3A%2F%2Fblog.csdn.net%2Fzhangquan2015%2Farticle%2Fdetails%2F79264540&amp;psi=1f283c47c9792b12ed499c54965f226d&amp;tlm=1566442796&amp;chi=1&amp;dai=8&amp;pcs=1858x920&amp;dis=0&amp;par=1920x1040&amp;drs=1&amp;ti=%E5%8D%A1%E5%B0%94%E6%9B%BC%E6%BB%A4%E6%B3%A2%E5%BA%94%E7%94%A8%E5%8F%8A%E5%85%B6matlab%E5%AE%9E%E7%8E%B0&amp;ltr=https%3A%2F%2Fblog.csdn.net%2FAsc11_%2Farticle%2Fdetails%2F40714239&amp;cfv=0&amp;exps=111000,118009,110011&amp;cpl=4&amp;tcn=1566442797&amp;dri=0&amp;cdo=-1&amp;cmi=6&amp;tpr=1566442796618&amp;ccd=24&amp;pis=-1x-1&amp;cce=true&amp;cec=UTF-8&amp;col=zh-CN&amp;dtm=HTML_POST&amp;dc=3&amp;psr=1920x1080&amp;ps=47205x580&amp;pss=1858x47259&amp;ant=0&amp;cja=false&amp;prot=2&amp;ari=2"></iframe></div><script type="text/javascript" src="//rabc1.iteye.com/common/openjs/m022.js?hcuzbzy=bi"></script></div></div>
    
                            <div class="recommend-loading-box">
                <img src="https://csdnimg.cn/release/phoenix/images/feedLoading.gif">
            </div>
            <div class="recommend-end-box" style="display: block;">
                <p class="text-center">没有更多推荐了,<a href="https://blog.csdn.net/" class="c-blue c-blue-hover c-blue-focus">返回首页</a></p>
            </div>
        </div>
    </main>
    
    展开全文
  • 前段时间用平方根无迹卡尔曼滤波做了一个观测器算法,之前也找了好多该算法的资料,在CSDN也下载过,但是并不能用,后来自己结合之前下载的代码又上各种论坛,梳理了一下。最终代码可以用了,论文也顺利投出去了。...
  • 卡尔曼滤波matlab实现

    2019-08-14 13:20:28
    卡尔曼滤波 前言 一直准备搞一下这个,但是一直没定下来,这次趁此机会试一下。
  • 平方根容积卡尔曼滤波matlab程序

    热门讨论 2014-03-15 12:17:32
    有平方根容积卡尔曼滤波算法实现对机器人手臂运动的跟踪matlab仿真程序;含有程序及文档说明;对于非线性滤波应用很有借鉴意义。
  • 卡尔曼滤波MatLab实例一:房间温度

    千次阅读 2019-07-19 17:09:08
    卡尔曼滤波简介 最近接触到卡尔曼滤波,查阅了图书馆以及网上的一些资料,稍微有点收获,在此记录一下,方便之后用到。 我主要参考了以下内容: ①https://blog.csdn.net/u010720661/article/details/63253509 这一...
  • 中心差分卡尔曼滤波器的matlab源代码,直接定义的程序,只需按照程序的规定输入输出数据,直接应用就可以了
  • 姿态确定的扩展卡尔曼滤波Matlab

    热门讨论 2011-03-21 10:15:48
    在姿态确定的四元数方程基础上,采用扩展卡尔曼滤波

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 679
精华内容 271
关键字:

卡尔曼滤波matlab

matlab 订阅