卡尔曼滤波方程解释观测方程误差设置是什么意思

卡尔曼滤波模型误差的影响分析_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
卡尔曼滤波模型误差的影响分析
上传于||文档简介
&&卡尔曼滤波模型误差的影响分析
阅读已结束,如果下载本文需要使用5下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢基于分布式传感器能量比的水下运动目标扩展卡尔曼滤波跟踪方法
申请号:.0 申请日:
摘要:本发明公开一种基于分布式传感器能量比的水下运动目标扩展卡尔曼滤波跟踪方法,首先引入两两传感器之间能量比的对数作为观测值,得到不同时刻的观测序列;然后结合目标的运动状态,将非线性的观测方程在误差可控范围内化为近似线性观测方程,构造线性状态-空间模型;然后导出状态-空间模型的扩展卡尔曼滤波序贯迭代求解算法;利用线性最小二乘(ER-LS)定位算法,对进入水下传感器网络范围内的运动目标定位,作为扩展卡尔曼滤波的初始值;最后,通过序贯滤波得到性能改进的水下目标运动轨迹。
地址: 310027 浙江省杭州市西湖区浙大路38号
发明(设计)人:
主分类号:
&实质审查的生效IPC(主分类):G01S
5/22申请日:
注:本法律状态信息仅供参考,即时准确的法律状态信息须到国家知识产权局办理专利登记簿副本。
&一种基于分布式传感器能量比的水下运动目标扩展卡尔曼滤波跟踪方法,其特征在于,包括步骤:1)在水下布放由M个传感器节点组成的网络,各传感器节点用以接收目标辐射出的声信号,并对获得的声信号按频率进行采样,然后序贯计算各个传感器节点对应时间段内声信号的能量测量值;2)根据目标在水下的运动规律建立运动状态方程;3)根据步骤1)中各传感器节点获得的能量测量值,计算M个传感器节点中每两个节点间声能的比值并取对数,作为观测量,构建原始观测方程;以目标运动规律为依据对原始观测方程做线性化处理,得到线性的等效观测方程;4)配置滤波迭代方程,得到状态估计的时间更新方程和测量更新方程、估计误差协方差的时间更新方程和量测更新方程;5)根据步骤4)滤波迭代方程进行滤波迭代后,得到各时刻最优状态。
专利代理机构
进入国家日期动态定位中的卡尔曼滤波研究_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
动态定位中的卡尔曼滤波研究
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩112页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢[卡尔曼滤波]卡尔曼滤波简介+ 算法实现代码
· · · ·
您当前的位置: → [卡尔曼滤波]卡尔曼滤波简介+ 算法实现代码
[卡尔曼滤波]卡尔曼滤波简介+ 算法实现代码
篇一 : 卡尔曼滤波简介+ 算法实现代码&&&最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。(]从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalman把状态空间模型引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼滤波理论。卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。它适合于实时处理和计算机运算。现设线性时变系统的离散状态防城和观测方程为:X(k) = F(k,k-1)·X(k-1)+T(k,k-1)·U(k-1)Y(k) = H(k)·X(k)+N(k)其中X(k)和Y(k)分别是k时刻的状态矢量和观测矢量F(k,k-1)为状态转移矩阵U(k)为k时刻动态噪声T(k,k-1)为系统控制矩阵H(k)为k时刻观测矩阵N(k)为k时刻观测噪声则卡尔曼滤波的算法流程为:预估计X(k)^= F(k,k-1)·X(k-1)&计算预估计协方差矩阵C(k)^=F(k,k-1)×C(k)×F(k,k-1)'+T(k,k-1)×Q(k)×T(k,k-1)'Q(k) = U(k)×U(k)'&计算卡尔曼增益矩阵K(k) = C(k)^×H(k)'×[H(k)×C(k)^×H(k)'+R(k)]^(-1)R(k) = N(k)×N(k)'&更新估计X(k)~=X(k)^+K(k)×[Y(k)-H(k)×X(k)^]&计算更新后估计协防差矩阵C(k)~ = [I-K(k)×H(k)]×C(k)^×[I-K(k)×H(k)]'+K(k)×R(k)×K(k)'&X(k+1) = X(k)~C(k+1) = C(k)~重复以上步骤其c语言实现代码如下:#include&"stdlib.h"&&#include&"rinv.c"&&int&lman(n,m,k,f,q,r,h,y,x,p,g)&&int&n,m,k;&&double&f[],q[],r[],h[],y[],x[],p[],g[];&&{&int&i,j,kk,ii,l,jj,&&&&double&*e,*a,*b;&&&&e=malloc(m*m*sizeof(double));&&&&l=m;&&&&if&(l&n)&l=n;&&&&a=malloc(l*l*sizeof(double));&&&&b=malloc(l*l*sizeof(double));&&&&for&(i=0;&i&=n-1;&i++)&&&&&&for&(j=0;&j&=n-1;&j++)&&&&&&&&{&ii=i*l+j;&a[ii]=0.0;&&&&&&&&&&for&(kk=0;&kk&=n-1;&kk++)&&&&&&&&&&&&a[ii]=a[ii]+p[i*n+kk]*f[j*n+kk];&&&&&&&&}&&&&for&(i=0;&i&=n-1;&i++)&&&&&&for&(j=0;&j&=n-1;&j++)&&&&&&&&{&ii=i*n+j;&p[ii]=q[ii];&&&&&&&&&&for&(kk=0;&kk&=n-1;&kk++)&&&&&&&&&&&&p[ii]=p[ii]+f[i*n+kk]*a[kk*l+j];&&&&&&&&}&&&&for&(ii=2;&ii&=k;&ii++)&&&&&&{&for&(i=0;&i&=n-1;&i++)&&&&&&&&for&(j=0;&j&=m-1;&j++)&&&&&&&&&&{&jj=i*l+j;&a[jj]=0.0;&&&&&&&&&&&&for&(kk=0;&kk&=n-1;&kk++)&&&&&&&&&&&&&&a[jj]=a[jj]+p[i*n+kk]*h[j*n+kk];&&&&&&&&&&}&&&&&&&&for&(i=0;&i&=m-1;&i++)&&&&&&&&for&(j=0;&j&=m-1;&j++)&&&&&&&&&&{&jj=i*m+j;&e[jj]=r[jj];&&&&&&&&&&&&for&(kk=0;&kk&=n-1;&kk++)&&&&&&&&&&&&&&e[jj]=e[jj]+h[i*n+kk]*a[kk*l+j];&&&&&&&&&&}&&&&&&&&js=rinv(e,m);&&&&&&&&if&(js==0)&&&&&&&&&&&{&free(e);&free(a);&free(b);&return(js);}&&&&&&&&for&(i=0;&i&=n-1;&i++)&&&&&&&&for&(j=0;&j&=m-1;&j++)&&&&&&&&&&{&jj=i*m+j;&g[jj]=0.0;&&&&&&&&&&&&for&(kk=0;&kk&=m-1;&kk++)&&&&&&&&&&&&&&g[jj]=g[jj]+a[i*l+kk]*e[j*m+kk];&&&&&&&&&&}&&&&&&&&for&(i=0;&i&=n-1;&i++)&&&&&&&&&&{&jj=(ii-1)*n+i;&x[jj]=0.0;&&&&&&&&&&&&for&(j=0;&j&=n-1;&j++)&&&&&&&&&&&&&&x[jj]=x[jj]+f[i*n+j]*x[(ii-2)*n+j];&&&&&&&&&&}&&&&&&&&for&(i=0;&i&=m-1;&i++)&&&&&&&&&&{&jj=i*l;&b[jj]=y[(ii-1)*m+i];&&&&&&&&&&&&for&(j=0;&j&=n-1;&j++)&&&&&&&&&&&&&&b[jj]=b[jj]-h[i*n+j]*x[(ii-1)*n+j];&&&&&&&&&&}&&&&&&&&for&(i=0;&i&=n-1;&i++)&&&&&&&&&&{&jj=(ii-1)*n+i;&&&&&&&&&&&&for&(j=0;&j&=m-1;&j++)&&&&&&&&&&&&&&x[jj]=x[jj]+g[i*m+j]*b[j*l];&&&&&&&&&&}&&&&&&&&if&(ii&k)&&&&&&&&&&{&for&(i=0;&i&=n-1;&i++)&&&&&&&&&&&&for&(j=0;&j&=n-1;&j++)&&&&&&&&&&&&&&{&jj=i*l+j;&a[jj]=0.0;&&&&&&&&&&&&&&&&for&(kk=0;&kk&=m-1;&kk++)&&&&&&&&&&&&&&&&&&a[jj]=a[jj]-g[i*m+kk]*h[kk*n+j];&&&&&&&&&&&&&&&&if&(i==j)&a[jj]=1.0+a[jj];&&&&&&&&&&&&&&}&&&&&&&&&&&&for&(i=0;&i&=n-1;&i++)&&&&&&&&&&&&for&(j=0;&j&=n-1;&j++)&&&&&&&&&&&&&&{&jj=i*l+j;&b[jj]=0.0;&&&&&&&&&&&&&&&&for&(kk=0;&kk&=n-1;&kk++)&&&&&&&&&&&&&&&&&&b[jj]=b[jj]+a[i*l+kk]*p[kk*n+j];&&&&&&&&&&&&&&}&&&&&&&&&&&&for&(i=0;&i&=n-1;&i++)&&&&&&&&&&&&for&(j=0;&j&=n-1;&j++)&&&&&&&&&&&&&&{&jj=i*l+j;&a[jj]=0.0;&&&&&&&&&&&&&&&&for&(kk=0;&kk&=n-1;&kk++)&&&&&&&&&&&&&&&&&&a[jj]=a[jj]+b[i*l+kk]*f[j*n+kk];&&&&&&&&&&&&&&}&&&&&&&&&&&&for&(i=0;&i&=n-1;&i++)&&&&&&&&&&&&for&(j=0;&j&=n-1;&j++)&&&&&&&&&&&&&&{&jj=i*n+j;&p[jj]=q[jj];&&&&&&&&&&&&&&&&for&(kk=0;&kk&=n-1;&kk++)&&&&&&&&&&&&&&&&&&p[jj]=p[jj]+f[i*n+kk]*a[j*l+kk];&&&&&&&&&&&&&&}&&&&&&&&&&}&&&&&&}&&&&free(e);&free(a);&free(b);&&&&return(js);&&}C++实现代码如下:============================kalman.h================================//&kalman.h:&interface&for&the&kalman&class.////////////////////////////////////////////////////////////////////////#if&!defined(AFX_KALMAN_H__ED3D740F_01D2__8BF__INCLUDED_)#define&AFX_KALMAN_H__ED3D740F_01D2__8BF__INCLUDED_#if&_MSC_VER&&&1000#pragma&once#endif&//&_MSC_VER&&&1000#include&&math.h&#include&"cv.h"&class&kalman&&{public:&void&init_kalman(int&x,int&xv,int&y,int&yv);&CvKalman*&&CvMat*&&&CvMat*&process_&CvMat*&&const&CvMat*&&CvPoint2D32f&get_predict(float&x,&float&y);&kalman(int&x=0,int&xv=0,int&y=0,int&yv=0);&//virtual&~kalman();};#endif&//&!defined(AFX_KALMAN_H__ED3D740F_01D2__8BF__INCLUDED_)============================kalman.cpp================================#include&"kalman.h"#include&&stdio.h&/*&tester&de&printer&toutes&les&valeurs&des&vecteurs*//*&tester&de&changer&les&matrices&du&noises&*//*&replace&state&by&cvkalman-&state_post&???&*/CvRandState&const&double&T&=&0.1;kalman::kalman(int&x,int&xv,int&y,int&yv){&&&&&&&&&cvkalman&=&cvCreateKalman(&4,&4,&0&);&&&&state&=&cvCreateMat(&4,&1,&CV_32FC1&);&&&&process_noise&=&cvCreateMat(&4,&1,&CV_32FC1&);&&&&measurement&=&cvCreateMat(&4,&1,&CV_32FC1&);&&&&int&code&=&-1;&&&&&&&&/*&create&matrix&data&*/&&&&&const&float&A[]&=&{&&&&1,&T,&0,&0,&&&0,&1,&0,&0,&&&0,&0,&1,&T,&&&0,&0,&0,&1&&};&&&&&&&&&&const&float&H[]&=&{&&&&&1,&0,&0,&0,&&&&0,&0,&0,&0,&&&0,&0,&1,&0,&&&0,&0,&0,&0&&};&&&&&&&&&&&&const&float&P[]&=&{&&&&pow(320,2),&pow(320,2)/T,&0,&0,&&&pow(320,2)/T,&pow(320,2)/pow(T,2),&0,&0,&&&0,&0,&pow(240,2),&pow(240,2)/T,&&&0,&0,&pow(240,2)/T,&pow(240,2)/pow(T,2)&&&&};&&&&&const&float&Q[]&=&{&&&pow(T,3)/3,&pow(T,2)/2,&0,&0,&&&pow(T,2)/2,&T,&0,&0,&&&0,&0,&pow(T,3)/3,&pow(T,2)/2,&&&0,&0,&pow(T,2)/2,&T&&&};&&&&&&&&const&float&R[]&=&{&&&1,&0,&0,&0,&&&0,&0,&0,&0,&&&0,&0,&1,&0,&&&0,&0,&0,&0&&&};&&&&&&&&&&&cvRandInit(&&rng,&0,&1,&-1,&CV_RAND_UNI&);&&&&cvZero(&measurement&);&&&&&&&&cvRandSetRange(&&rng,&0,&0.1,&0&);&&&&rng.disttype&=&CV_RAND_NORMAL;&&&&cvRand(&&rng,&state&);&&&&memcpy(&cvkalman-&transition_matrix-&data.fl,&A,&sizeof(A));&&&&memcpy(&cvkalman-&measurement_matrix-&data.fl,&H,&sizeof(H));&&&&memcpy(&cvkalman-&process_noise_cov-&data.fl,&Q,&sizeof(Q));&&&&memcpy(&cvkalman-&error_cov_post-&data.fl,&P,&sizeof(P));&&&&memcpy(&cvkalman-&measurement_noise_cov-&data.fl,&R,&sizeof(R));&&&&//cvSetIdentity(&cvkalman-&process_noise_cov,&cvRealScalar(1e-5)&);&&&&&&&&//cvSetIdentity(&cvkalman-&error_cov_post,&cvRealScalar(1));&//cvSetIdentity(&cvkalman-&measurement_noise_cov,&cvRealScalar(1e-1)&);&&&&/*&choose&initial&state&*/&&&&state-&data.fl[0]=x;&&&&state-&data.fl[1]=&&&&state-&data.fl[2]=y;&&&&state-&data.fl[3]=&&&&cvkalman-&state_post-&data.fl[0]=x;&&&&cvkalman-&state_post-&data.fl[1]=&&&&cvkalman-&state_post-&data.fl[2]=y;&&&&cvkalman-&state_post-&data.fl[3]=&cvRandSetRange(&&rng,&0,&sqrt(cvkalman-&process_noise_cov-&data.fl[0]),&0&);&&&&cvRand(&&rng,&process_noise&);&&&&}&&&&&CvPoint2D32f&kalman::get_predict(float&x,&float&y){&&&&&&&&/*&update&state&with&current&position&*/&&&&state-&data.fl[0]=x;&&&&state-&data.fl[2]=y;&&&&&&&&/*&predict&point&position&*/&&&&/*&x'k=A鈥?k+B鈥?k&&&&&&&P'k=A鈥?k-1*AT&+&Q&*/&&&&cvRandSetRange(&&rng,&0,&sqrt(cvkalman-&measurement_noise_cov-&data.fl[0]),&0&);&&&&cvRand(&&rng,&measurement&);&&&&&&&&&/*&xk=A?xk-1+B?uk+wk&*/&&&&cvMatMulAdd(&cvkalman-&transition_matrix,&state,&process_noise,&cvkalman-&state_post&);&&&&&&&&/*&zk=H?xk+vk&*/&&&&cvMatMulAdd(&cvkalman-&measurement_matrix,&cvkalman-&state_post,&measurement,&measurement&);&&&&&&&&/*&adjust&Kalman&filter&state&*/&&&&/*&Kk=P'k鈥?T鈥?H鈥?'k鈥?T+R)-1&&&&&&&xk=x'k+Kk鈥?zk-H鈥?'k)&&&&&&&Pk=(I-Kk鈥?)鈥?'k&*/&&&&cvKalmanCorrect(&cvkalman,&measurement&);&&&&float&measured_value_x&=&measurement-&data.fl[0];&&&&float&measured_value_y&=&measurement-&data.fl[2];&&&&&const&CvMat*&prediction&=&cvKalmanPredict(&cvkalman,&0&);&&&&float&predict_value_x&=&prediction-&data.fl[0];&&&&float&predict_value_y&=&prediction-&data.fl[2];&&&&return(cvPoint2D32f(predict_value_x,predict_value_y));}void&kalman::init_kalman(int&x,int&xv,int&y,int&yv){&state-&data.fl[0]=x;&&&&state-&data.fl[1]=&&&&state-&data.fl[2]=y;&&&&state-&data.fl[3]=&&&&cvkalman-&state_post-&data.fl[0]=x;&&&&cvkalman-&state_post-&data.fl[1]=&&&&cvkalman-&state_post-&data.fl[2]=y;&&&&cvkalman-&state_post-&data.fl[3]=}篇二 : 动态卡尔曼滤波综述华章Writing动态卡尔曼滤波综述董恒棣(徐州市勘察测绘研究院,江苏徐州221006)[摘要]随着动态定位技术的发展,对于滤波算法提出了新的要求。[)本文在对当前动态滤波算法的发展及其相关比较的基础上,找出了各种算法之间的差异与不足,并对今后卡尔曼滤波的发展趋势进行了预测。tne[关键词]卡尔曼滤波;抗差滤波;自适应滤波cfiingaM卡尔曼滤波理论采用时域法以状态方程为其数学工具,以多变量控制、最优控制与估计及自适应控制为主要内容,是动态数据处理的重要方法之一。伴随着计算机的快速发展,滤波理论在动态数据的处理问题中越来越显示出其实时、快速、精确、抗干扰等特点,已经广泛地应用于GPS、导航、变形监测及数字摄影测量的数据处理等领域。而动态定位领域中遇到的实际问题又使滤波理论的研究更加深入与完善。其方法主要包括标准卡尔曼滤波及由此而发展起来的抗差滤波、渐消滤波及自适应滤波等。为此,笔者对各种卡尔曼滤波算法进行了相应的比较。1、卡尔曼滤波现状与不足1.1标准卡尔曼滤波(CKF)。标准卡尔曼滤波解基于最小二乘准则。它采用状态方程描述系统动态模型,用观测方程描述系统观测模型,从而由参数的验前估值与新的观测数据进行状态参数的更新。因此,卡尔曼滤波只需存储前一历元的状态参数估值,而无需存储所有历史观测信息,且由于算法采用递推形式,非常适用计算机编程来实现。CKF可以处理平稳随机过程、多维及非平稳随机过程。标准卡尔曼滤波是一种高效滤波,在特定假设前提下,卡尔曼滤波能够给出状态参数的可靠解。但若这些假设前提不能满足时,则实际应用中由Kalman滤波提供的动态信息将被扭曲,因为微小的动态变化信息都可能被异常观测分布和参数的异常偏差所掩盖。然而在动态定位中,动态噪声和观测噪声往往具有不确定性,这将导致卡尔曼滤波性能下降甚至可能发散。因此,标准卡尔曼滤波在实际的应用中仍具有很多的限制。1.2渐消滤波(FKF)。渐消滤波采用渐消因子来限制卡尔曼滤波器的记忆长度,以便充分利用现时的观测数据,该方法的关键集中在求解渐消因子上。将验前状态协方差矩阵膨胀k一般大于1,当历史历元状态估值可靠时,该方法将可能降低其使用效率,从而降低滤波的精度;实践中,这种滤波方法难以区分模型误差与前一历元状态估计误差,当动力学模型存在较大的误差时,二○一一年第十七期作者简介:董恒棣,徐州市勘察测绘研究院。动态滤波 动态卡尔曼滤波综述性。[]前者假定是高斯白噪声,后者在卡尔曼滤波中通常也假定是高斯白噪声,这是数学处理的需要。然而在动态定位中,动态噪声和观测噪声都不是白噪声,而是相关噪声。这就涉及到相关噪声下的卡尔曼滤波算法的研究。目前常用的自适应滤波方法,都是设法利用滤波过程自身获得的某些信息对滤波器的设计加以改进和修正,以降低滤波误差并增强滤波器适应外界环境条件不断变化的能力,从而使滤波器具有一定的智能性和抗差性。但是目前存在的各种自适应滤波方法普遍存在算法结构复杂、实时性和可靠性较差,不利于工程应用等一系列缺点,在算法结构的设计上,还缺乏统一的理论指导。对于动态定位和导航中的卡尔曼滤波技术,目前的发展趋势主要表现在:(1)针对粗差在动态定位中的影响问题,我们需尔曼滤波理论不相符。如何建立一个新的算法处理测量噪声相关性问题,对于动态定位结果的准确性是非常有意义的;(6)由于卡尔曼滤波最初提出的滤波理论只适应线性系统,而实际的导航定位系统的量测模型都具有非线性,因而研究适合于组合导航系统特点的滤波方法具有需求性;(7)可靠的Kalman滤波算法要求有可靠的函数模型、随机模型以及合理的估计方法。目前存在的各种自适应滤波方法普遍存在着算法结构复杂、实时性和可靠性较差,不利于工程应用等一系列缺点。应加强卡尔曼滤波理论与实际应用的结合,提高其实用性。3、结束语本文系统回顾了动态定位中的卡尔曼滤波理论发展历史和研究现状,展望了动态定位中的卡尔曼滤波理论发展的趋势及华章MagnificentWriting要研究一种快速、准确检测粗差的技术,并且能够进行粗差定位,应用前景。在此基础上,指出了动态定位中的卡尔曼滤波理论对其进行修正,以达到消除或者减少观测粗差的目的;(2)需要还有待进一步解决的问题,详细介绍了卡尔曼滤波的算法以及研究滤波模型发现模型偏差的能力,以及粗差与机动的可区分性;(3)针对载体的不规则运动,如何建立相适应的动态方程,或者是在常速度模型(CV)中,如何利用数理统计的相关知识,建立相应较合理的统计量,对载体机动发生的时刻和大小进行快速检测;(4)在GPS动态定位中,由于GPS卫星的失锁,不同历元的观测卫星不完全相同,组成的双差方程相应也不同,会导致新一轮滤波的开始,这就需要研究一种融合算法,来克服因观测卫星变化所引起重新开始滤波的现象;(5)在GPS动态定位中,测量噪声是与时间相关的,且它的方差也是随时间变化的,这与卡(上接第232页)体会了生活处处存数学。4、积极开展实践活动,让教材更完美《课标》提到:“沟通课堂内外……拓宽学生的学习空间,增加学生学习数学的实践机会。”课堂只是小天地,社会乃为大课堂,我们的教学绝不仅仅束缚于课堂教学之中。新课程打破了“教学就是教室里上课”的传统观念,学生学习活动的空间不再局限于教室,而是拓宽到生活和社会的各个领域,让学生到大自然去,到社会实践中去学习。可以使学生将自己学到的知识、技能适时地、恰如其分地运用于实践,在实践中认识自我,在实践中完善自我。例如,教学“认识人民币”之后,配合我校开展的以《亲近自然,感受自然》为主题的春游活动,学生应如何合理地采购食物而进行的模拟实践活动。通过“角色扮演”这一生动有趣的活动形式,在顾客与售货员的付款与交货的过程中加深了对人民币的认识,掌握了人民币单位之间的换算,在整个活动的交谈中慢慢学会与他人的沟通与交流,培养了学生的人际交往能力,并使学生切身体会到人民币在生活中的作用,体会到了数学、社会的紧密联系,增进了对数学的了解和应用数学的信心。现行教材不管在选材还是呈现方式上都尽量体现了“以学在动态定位应用中的质量控制。【参考文献】[1]杨元喜.自适应动态导航定位[M].测绘出版社,2006.51[2]杨元喜.动态系统的抗差Kalman滤波[J].解放军测绘学院学报,1997.[3]聂建亮.采用自适应UnscentedKalman的粒子滤波[J].大地测量与地球动力学,2008.3.[4]杨元喜,何海波,徐天河.论动态自适应滤波[J].测绘学报,2001.[5]宋迎春.动态定位中的卡尔曼滤波研究[D].博士学位论文,]高为广.自适应融合导航理论与方法及其在GPS和INS中的应用[D].硕士学位论文,2005.4.的,这不但影响了学生对知识的理解而且也阻碍了学生三维目标的达成。因此,我们的数学教学必须改变长期以来,眼光只停留在教材上,为了教师自身的功利性,完全脱离现实的教学。使理解性教学,学生主动获取知识成为学生学习的主流。例如,教学“镜面对称”现象时,课前并没有引起我足够的心理准备,课堂上非常卖力手舞足蹈、唾沫横飞地解说,但学生并不卖帐,个个一幅莫名其妙、茫然不知所以的神情,令我颇为懊恼。最后没办法,在明确照镜子的目的要求的基础上,临时组好队带着学生到教学楼楼层之间的走廊一个一个照镜子,让他们尽情在镜前挤眉弄眼、搔首摆姿,同时要求仔细观察自己的动作、体会自己与镜中的影子间的联系。经过十多分钟的照镜子,结果大出意料,竟然毫不费力地把学生最难理解、掌握地知识就地轻易解决,无需我费唇舌,真是“此地无声胜有声”。由此,我也有了更深刻地理解。这现象不禁让我深深感叹:“生活,数学之根啊!”让数学知识面向生活、联系生活、再现生活、回归儿童生活有利于学生轻松理解知识、掌握知识。把学生的个人直接经验,学生的生活世界看成是课堂教学的重要课程资源,既体现了数学与现实生活的不可分割,更为重要的是让学生感受了真实的、为继续学习增进了情感、拓展了思维。生发展为本”,比起以往的教材内容更丰富,方式更加的多样化,富有活力的数学知识,合理开发和利用课程资源,需要我们在正确理解教材的基选题更精练,并且在每一册教科书中都插入了二到三课时的实具有一双敏锐的眼睛,一颗睿智的头脑,一份永恒的教育践活动课。但作为教师我们还要在此基础上根据学生的实际,础上,就能让数学知识与现实生活水乳交融,就能让教材成为一选择更多的、利于开展和操作、丰富多彩的实践活动课,以增强爱心,学生运用知识与实践活动的能力,使教材更加的丰满,更加的完美。5、在生活中感悟数学,让教材返墣归真荷兰数学家弗赖登塔尔指出:“数学来源于现实,植根于现实,应用于现实。”离开现实,数学便成为无源之水,无基之楼。离开现实的教学,我们培养的是高智低能型的学生,知识的获取方纯数学部“活”书,实现“材”源茂盛,也就能引领学生在快乐、轻松中创造更多的精彩。【参考文献】[1]浙江省教育厅师范教育处组织.课程改革——学习主题构建[M].北京科学出版社,]刘兼,孙晓天.数学课程标准解读[M].北京师范大学出版社,2002.5.[3]严育洪.新课程评价操作和案例[M].首都师范大学出版社,].100例[M].浙江教育出版社,2006.12.二○一一年第十七期299篇三 : 卡尔曼滤波的MATLAB实现卡尔曼滤波的MATLAB实现一、实验内容一个系统模型为 同时有下列条件:(1) 初始条件已知且有x(0)?[0,0]T。[](2) w(k)是一个标量零均值白高斯序列,且自相关函数已知为E[w(j)w(k)]??jkx1(k?1)?x1(k)?x2(k)?w(k),k?0,1,?x2(k?1)?x2(k)?w(k)。另外,我们有下列观测模型,即 且有下列条件:(3) v1(k?1)和v2(k?1)是独立的零均值白高斯序列,且有 E[v1(j)v1(k)]??jky1(k?1)?x1(k?1)?v1(k?1),k?0,1,?y2(k?1)?x2(k?1)?v2(k?1),E[v2(j)v2(k)]?2?jk,k?0,1,2,?(4) 对于所有的j和k,w(k)与观测噪声过程v1(k?1)和v2(k?1)是不相关的,即E[w(j)v1(k)]?0,E[w(j)v2(k)]?0,j?0,1,2,?,k?0,1,2,?我们希望得到由观测矢量y(k?1),即y(k?1)?[y1(k?1),y2(k?1)]T估计状态矢量x(k?1)?[x1(k?1),x2(k?1)]T的卡尔曼滤波器的公式表示形式,并求解以下问题:(a) 求出卡尔曼增益矩阵,并得出最优估计x(k?1)和观测矢量y(1),y(2),...,y(k?1)之间的递归关系。(b) 通过一个标量框图(不是矢量框图)表示出状态矢量x(k?1)中元素x1(k?1)和x2(k?1)估计值的计算过程。(c) 用模拟数据确定状态矢量x(k)的估计值x(kk),k?0,1,...,10,并画出当k=?卡尔曼滤波 卡尔曼滤波的MATLAB实现0,1,…,10时x1(kk)和x2(kk)的图。()(d) 通常,状态矢量的真实值是得不到得。但为了用作图来说明问题,表P8.1和P8.2给出来状态矢量元素得值。对于k=0,1,…,10,在同一幅图中画出真实值和在(c)中确定的x1(k)的估计值。对x2(k)重复这样过程。当k从1变到10时,对每一个元素i=1,2,计算并画出各自的误差图,即xi(k)?xi(kk)。(e) 当k从1变到10时,通过用卡尔曼滤波器的状态误差协方差矩阵画出E[?1(kk)]2???和?E[?2(kk)]2,而??1(kk)?x1(k)?x1(kk),?2(kk)?x2(k)?x2(kk)。(f) 讨论一下(d)中你计算的误差与(e)中方差之间的关系。表P8.1 题8.1到题8.3中的观测值时间下标k1 观测值y1(k)3.75595观测值y2(k)2.16361表P8.2 题8.1到题8.3中的由模拟得到的实际状态值时间下标k实际状态值x1(k)实际状态值x1(k)0..470340卡尔曼滤波 卡尔曼滤波的MATLAB实现二、实验原理1、卡尔曼滤波简介卡尔曼滤波是解决以均方误差最小为准则的最佳线性滤波问题,它根据前一个估计值和最近一个观察数据来估计信号的当前值。[]它是用状态方程和递推方法进行估计的,而它的解是以估计值(常常是状态变量的估计值)的形式给出其信号模型是从状态方程和量测方程得到的。卡尔曼过滤中信号和噪声是用状态方程和测量方程来表示的。因此设计卡尔曼滤波器要求已知状态方程和测量方程。它不需要知道全部过去的数据,采用递推的方法计算,它既可以用于平稳和不平稳的随机过程,同时也可以应用解决非时变和时变系统,因而它比维纳过滤有更广泛的应用。2、卡尔曼滤波的递推公式???xk?Akxk?1?Hk(yk?CkAkxk?1)???1Hk?Pk?Ck(CkPk?Ck?Rk)………(1) ………(2)Pk??AkPk?1Ak?Qk?1?………(3)Pk?(I?HkCk)Pk?………(4)3、递推过程的实现如果初始状态x0的统计特性?E[x0]及var[x0]已知,并令又将P0x0?E[x0]??0?? ?P0?E[(x0?x0)(x0?x0)]?var[x0] 代入式(3)可求得P1?,将P1?代入式(2)可求得H1,将此H1代入式?(1)可求得在最小均方误差条件下的x1,同时将P1?代入式(4)又可求得P1;?由P1又可求P2?,由P2?又可求得H2,由H2又可求得x2,同时由H2与P2?又可求得P2……;以此类推,这种递推计算方法用计算机计算十分方便。三、MATLAB程序%卡尔曼滤波实验程序y1=[3..........]; %观测值y1(k)卡尔曼滤波 卡尔曼滤波的MATLAB实现y2=[2..........]; %观测值y2(k) p0=[1,0;0,1];p=p0; %均方误差阵赋初值Ak=[1,1;0,1]; %转移矩阵Qk=[1,0;0,1]; %系统噪声矩阵Ck=[1,0;0,1]; %量测矩阵Rk=[1,0;0,2]; %测量噪声矩阵x0=[0,0]';xk=x0; %状态矩阵赋初值for k=1:10Pk=Ak*p*Ak'+Qk; %滤波方程3Hk=Pk*Ck'*inv(Ck*Pk*Ck'+Rk); %滤波方程2yk=[y1(k);y2(k)]; %观测值xk=Ak*xk+Hk*(yk-Ck*Ak*xk); %滤波方程1x1(k)=xk(1);x2(k)=xk(2); %记录估计值p=(eye(2)-Hk*Ck)*Pk; %滤波方程4pk(:,k)=[p(1,1),p(2,2)]'; %记录状态误差协方差矩阵endfigure %画图表示状态矢量的估计值subplot(2,1,1)i=1:10;plot(i,x1(i),'k')h=legend('x1(k)的估计值')set(h,'interpreter','none')subplot(2,1,2)i=1:10;plot(i,x2(i),'k')h=legend('x2(k)的估计值')set(h,'interpreter','none')X1=[0,1..........]; %由模拟得到的实际状态值X1(k)X2=[0,1..........]; %由模拟得到的实际状态值X2(k)figure %在同一幅图中画出状态矢量的估计值与真实值subplot(2,1,1)i=1:10;plot(i,x1(i),'k',i,X1(i+1),'b')h=legend('x1(k)的估计值','x1(k)的真实值')set(h,'interpreter','none')subplot(2,1,2)i=1:10;卡尔曼滤波 卡尔曼滤波的MATLAB实现plot(i,x2(i),'k',i,X2(i+1),'b')h=legend('x2(k)的估计值','x2(k)的真实值')set(h,'interpreter','none')for i=1:10 %计算x(k)的误差e1(i)=X1(i+1)-x1(i);e2(i)=X2(i+1)-x2(i);endfigure %画出误差图subplot(2,1,1)i=1:10;plot(i,e1(i),'r')h=legend('x1(k)的误差')set(h,'interpreter','none')subplot(2,1,2)i=1:10;plot(i,e2(i),'r')h=legend('x2(k)的误差')set(h,'interpreter','none')figure %通过用卡尔曼滤波器的状态误差协方差矩阵画出E[ε1(k/k)^2]和E[ε2(k/k)^2]i=1:10;subplot(2,1,1)plot(i,pk(1,i),'r')h= legend('由状态误差协方差矩阵得到的E[ε1(k/k)^2]')set(h,'Interpreter','none')subplot(2,1,2)plot(i,pk(2,i),'r')h= legend('由状态误差协方差矩阵得到的E[ε2(k/k)^2]')set(h,'Interpreter','none')四、实验结果分析?CT?(C?Pk’?CT?R)?1 (a)卡尔曼增益矩阵:Hk?Pk’???估计值与观测值之间的递归关系为:Xk?Ak?Xk-1?Hk?(Yk?Ck?Ak?Xk-1)(b)状态矢量估计值的计算框图:卡尔曼滤波 卡尔曼滤波的MATLAB实现?k?1 x(c)x1(kk)和x2(kk)的图:??卡尔曼滤波 卡尔曼滤波的MATLAB实现(d)真实值与估计值的比较图:各自的误差图:卡尔曼滤波 卡尔曼滤波的MATLAB实现(e)通过用卡尔曼滤波器的状态误差协方差矩阵画出的E[?12(kk)]和E[?2(kk)]:2(f)分析:(e)中的方差是(d)中的误差平方后取均值,是均方误差。[)误差直接由真实值减去估计值,有正有负,而均方误差没有这个缺陷,更能综合的表示滤波的效果。篇四 : 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波卡尔曼 卡尔曼滤波
上一篇文章:
下一篇文章:
本文标题:[卡尔曼滤波]卡尔曼滤波简介+ 算法实现代码&版权说明
文章标题: 文章地址:
1、《[卡尔曼滤波]卡尔曼滤波简介+ 算法实现代码》一文由262阅读网()网友提供,版权归原作者本人所有,转载请注明出处!
2、转载或引用本网内容必须是以新闻性或资料性公共免费信息为使用目的的合理、善意引用,不得对本网内容原意进行曲解、修改,同时必须保留本网注明的"稿件来源",并自负版权等法律责任。
3、对于不当转载或引用本网内容而引起的民事纷争、行政处理或其他损失,本网不承担责任。}

我要回帖

更多关于 卡尔曼滤波方程的推导 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信