精华内容
下载资源
问答
  • 卡尔曼滤波MATLAB代码

    2018-03-19 18:16:51
    国外学者的开源卡尔曼滤波MATLAB代码,备注详细,可以用于目标跟踪基础学习
  • 卡尔曼滤波matlab代码

    2018-05-21 14:17:09
    代码是两输入两输出的一个滤波系统,可以帮助理解卡尔曼滤波原理过程。
  • 扩展卡尔曼滤波MATLAB代码 % UKF Unscented Kalman Filter for nonlinear dynamic systems % [x, P] = ukf(f,x,P,h,z,Q,R) returns state estimate, x and state covariance, P
  • 卡尔曼滤波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中实现卡尔曼滤波代码,带有数据集和代码demo,可直接运行,还有相关说明两篇
  • GPS接受机中的卡尔曼滤波MATLAB代码
  • 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; ...
  • 针对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');

    展开全文
  • 前段时间用平方根无迹卡尔曼滤波做了一个观测器算法,之前也找了好多该算法的资料,在CSDN也下载过,但是并不能用,后来自己结合之前下载的代码又上各种论坛,梳理了一下。最终代码可以用了,论文也顺利投出去了。...
  • 中心差分卡尔曼滤波器的matlab代码,直接定义的程序,只需按照程序的规定输入输出数据,直接应用就可以了
  • 卡尔曼滤波matlab程序

    2020-12-07 18:28:37
    二自由度卡尔曼滤波,实现X与Y方向两个自由度的滤波。代码使用awgn函数添加高斯白噪声,在用卡尔曼滤波的方法将除去噪声得到向真实值收敛的数据。
  • 卡尔曼滤波matlab代码,很不错的一段代码,扩展卡尔曼在参数估计等领域应用广泛,希望可以帮到你!
  • 卡尔曼滤波 Matlab程序

    2018-11-07 16:46:33
    代码为书籍《卡尔曼滤波原理及应用》配套的代码,可用于卡尔曼滤波的学习
  • 卡尔曼滤波matlab

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

    2012-01-01 13:50:45
    matlab卡尔曼滤波进行仿真,源代码和PPT。
  • 很全的 卡尔曼 算法 matlab仿真程度 代码集,包含基本卡尔曼,扩展卡尔曼、无味卡尔曼,以及相应误差对比分析,及在各个项目中的应用实例,是本人珍藏的代码集,有兴趣可以与我交流,本人研究粒子滤波的目标跟踪,我...
  • 仿真代码的m文件以及更多丰富的卡尔曼滤波相关参考资料的的可直接给“雷达通信电子战”发送“190714”查看。仿真运行结果如下:%% 卡尔曼滤波器clc;close all;clear;Z = 1:100; % 位置观测值noise = randn(1...

    上面视频为中文视频,来源网络,详细讲述了卡尔曼滤波原理在小车运行速度估计中的应用。以下为仿真程序中使用到的公式,具体分析和介绍请看上面视频。

    204449842672b6ec51c83f35aaccf7fa.png

    仿真代码的m文件以及更多丰富的卡尔曼滤波相关参考资料的的可直接给“雷达通信电子战”发送“190714”查看。仿真运行结果如下:

    c7e0c3b9a4e4562df7a03964e784e6ce.png

    %% 卡尔曼滤波器

    clc;close all;clear;

    Z = 1:100; % 位置观测值

    noise = randn(1,100); % 方差为1的高斯噪声

    Z = Z + noise;

    X = [0;0]; %初始状态

    P = [1 0; 0 1]; %状态协方差矩阵

    F = [1 1; 0 1]; % 状态转移矩阵

    Q = [0.0001,0; 0, 0.0001]; % 状态转移协方差矩阵

    H = [1 0]; %观测矩阵

    R = 1; % 观测噪声方差

    figure;

    hold on; grid on;

    xlabel('位置');ylabel(''速度);

    title(''卡尔曼滤波仿真);

    for i=1:100

        X_ = F*X;

        P_ = F*P*F'+Q;

        K = P_*H'/(H*P_*H'+R);

        X = X_+K*(Z(i)-H*X_);

        P = (eye(2)-K*H)*P_;

        plot(X(1),X(2),'r*'); %横轴表示位置,纵轴表示速度

    end

    hold off;

    这个视频来源Mathworks,长度超过50分钟,内容详细,生动利于理解,英文讲解,含英文字幕。

    仿真代m文件以及更多丰富的卡尔曼滤波相关参考资料的的可直接给“雷达通信电子战”送“190714”查看。仿真运行结果如下:

    952489ee5c96bc4bdcf7c0b18e8f9a63.png

    ,更多精彩等着你!

    展开全文
  • 自编的KALMAN滤波程序,保证能够运行。跟踪一个匀速直线运动的目标。程序可扩展能力强。可以进行修改。非常值得卡尔曼滤波的初学者下载。
  • UKF的matlab代码,用于无迹卡尔曼滤波算法的学习,希望大家多多交流,共同学习.
  • 我喜欢智慧石的资源:卡尔曼滤波
    我喜欢智慧石的资源:卡尔曼滤波
    
    展开全文
  • 卡尔曼滤波理论与实践(MATLAB版)(第四版) 莫欣德 S.格雷沃 (Mohinder S.Grewal) (作者), 安格斯 P.安德鲁斯 (Angus P.Andrews) matlab代码卡尔曼滤波各种实例分析
  • 注:本文非科普向,会涉及一些一些数学推导,对于具体的算法,也附带了MATLAB代码编程.亲爱的知友们,你们好啊,欢迎来到我的滤波专栏系列鸭~Boya的科研杂记​zhuanlan.zhihu.com我这也是鸽了好久了,最近状态也不太...

    a743e54499c375627295f08e67d71482.png

    注:本文非科普向,会涉及一些一些数学推导,对于具体的算法,也附带了MATLAB代码编程.

    亲爱的知友们,你们好啊,欢迎来到我的滤波专栏系列鸭~

    c07eb1246ed3b1e4606ded7a01b56a7f.png
    Boya的科研杂记zhuanlan.zhihu.com
    ed881dbaa09c5d98573e737b8591a7f7.png

    我这也是鸽了好久了,最近状态也不太好,各种烦心事儿,十分抱歉啊.

    相信大家绝大部分都已经开学了吧,貌似有些学校还是封闭式管理呢,而且部分高校国庆节也才调休3天,打算寒假提前放假.

    不管怎么样,相信大家重新回到学校里面,一定是很开心的吧,我的话,返校的感觉就是学校食堂涨价了,但是量却没涨多少.每顿饭量也挺多的,按照这个趋势下去,我不胖不行啊,嘻嘻(●'◡'●)

    而且我也很感谢大家的支持啊,知乎小白粉丝突破了3K,以后我也会更加频繁地更新相关内容的,大家敬请期待,爱你们哟~(^U^)ノ~YO


    今天我们要讲的内容是非线性卡尔曼滤波的第一种,也是很常见的一种,跟往常一样,我们优先介绍理论,会在接下来的文章中进行数值仿真~

    若大家想了解之前写过的卡尔曼滤波以及仿真,传送通道在这里了:

    Rainsley:贝叶斯滤波(Bayesian filtering)zhuanlan.zhihu.com
    0642552283b5ffe378c03ef5bba38e02.png
    Rainsley:卡尔曼滤波(Kalman filter)zhuanlan.zhihu.com
    36b5037fad504abf6aa9f29dcbd56d09.png
    Rainsley:卡尔曼滤波(Kalman filter)实例研究——汽车跟踪问题(Car tracking)zhuanlan.zhihu.com
    1cd71c4b66cce01884ab609873d187e9.png

    我们就开始今天的内容吧!我们对于卡尔曼滤波,说它其实就是一个线性高斯系统,这里的线性性主要是指运动模型与观测模型均是线性的。

    当然,我们大家一定具备这样的数学思维:数学中的线性的大部分都是,易于处理的,而比较困难的大头的东西是非线性的,往往可以在局部对它进行线性展开近似处理,我们今天要讲的扩展卡尔曼滤波(EKF)就是如此:

    EKF的主要思想——泰勒展开

    我们已经知道非线性滤波主要体现在运动模型以及观测模型都是非线性的,比如:

    emmmm,刚刚去刷了一会儿微博,因为今夜凌晨有Apple的发布会,哈哈哈,我们继续鸭~

    主要思路呢,其实就是对非线性这部分进行近似线性处理,这里我们考虑最一般的泰勒展开:

    到了这里呢,还不够,我们大家要明确一个知识点,就是关于正态分布,我们要得到边缘密度,条件密度,必须已知联合分布,这个是关键的~

    大部分情况下,我们的一个正态随机变量经过非线性变换以后,大概率得到的随机变量不服从正态分布,但是我们进行了一阶线性近似,所以就考虑假设变换后的随机变量仍旧是正态分布.

    过程推导

    有了上面的内容,意味着我们可以对一个随机变量进行非线性变换,然后接着可以得到变换后的随机变量的期望和方差。然后我们就可以直接利用前面的卡尔曼滤波方程,直接进行替代即可.

    所以形式上我们可以看到,卡尔曼滤波之所以够经典,就是因为其他有些滤波完全借助它的框架而进行展开,从EKF的主要思想上我们也不难看出,由于只采用了一阶近似,在后续的迭代中,误差可能会越来越大.这也算是它的缺点了.

    好的,各位小伙伴们!本期滤波内容就到这里了,我们下期再见!

    ☆⌒(*^-゜)v THX!!

    如果觉得我的文章还有用的话,还烦请各位阿娜答三联支持一波哦!

    主要参考资料:《Bayesian Filtering and Smoothing》,Simo Sarkka著。

    展开全文
  • 卡尔曼滤波用于语音增强的一个经典代码 matlab - 副本 function output=KalmanSignalDenoiser(Noisy,Clean,fs) OUTPUT=KALMANSIGNALDENOISER(NOISY,CLEAN,FS) this purpose of this function is to demonstrate the ...
  • 您的博文:http://blog.csdn.net/xiahouzuoxin/article/details/39582483中的代码我用MATLAB调试时提示:Input argument "s" is undefined.Error in ==> kalmanf at 150if ~isfield(s,'x'); s.x=nan*z; end请问是...
  • TDOA_AOA定位的扩展卡尔曼滤波算法MATLAB代码
  • 【实例简介】卡尔曼滤波视觉跟踪源代码及效果视频,直接运行即可,调试完全可用,matlab仿真源码,程序简单易懂,非常适合新手学习【实例截图】【核心代码】29b664ed-3607-4fdf-aa16-5779205797fd└── target ...
  • 实用标准文档 信息融合大作业 维纳最速下降法滤波器卡尔曼滤波器设计及 Matlab 仿真 时间 2010-12-6 专业信息工程 班级 09030702 文案大全 实用标准文档 学号 2007302171 姓名马志强 1. 滤波问题浅谈 估计器或滤波器...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 232
精华内容 92
关键字:

卡尔曼滤波matlab代码

matlab 订阅