完整的实验报告下载连接https://download.csdn.net/download/LIsaWinLee/14884356

一、实验原理

卡尔曼滤波和维纳滤波都是最小均方误差为准则的线性估计器。卡尔曼滤波和维纳滤波的不同点在于:(1)解决最佳滤波的方法不同,维纳滤波是用频域及传递函数的方法,卡尔曼是用时域及状态变量的方法;(2)维纳滤波要求过程的自相关系数和互相关函数的简单知识,而卡尔曼滤波则要求时域中状态变量及信号产生过程的详细知识;(3)维纳滤波要求平稳,而卡尔曼滤波则不要求。

1.1维纳滤波器原理

维纳滤波的原理是根据全部过去的和当前的观测数据xn,xn-1,… 来估计信号的当前值。以均方误差最小条件下求解系统的传递函数H(z) 或单位脉冲响应h(n) 。维纳滤波的信号模型是从信号与噪声的相关函数得到。

维纳滤波器的一般结构如下:

有一期望响应d(n) ,滤波器系数的设计准则是使得滤波器的输出y(n) 是均方意义上对期望响应的最优线性关系。

线性系统输出为:

yn=sn=mhmx(n-m)

均方误差为:Ee2n=Esn-m=0∞hmx(n-m)2

维纳滤波器的设计,实际上就是在最小均方误差的条件下,即∂E[e2n]hj=0 ,确定滤波器的冲激响应h(n) 或系统函数H(z) ,可等效于求解维纳-霍夫方程。

1.2卡尔曼滤波器原理

卡尔曼滤波的原理是不需要全部过去的观察数据,只根据前一个估计值和最近一个观察数据来估计信号的当前值。它是用状态空间法描述系统,即由状态方程和量测方程组成。解是以估计值的形式给出的,其算法是递推。卡尔曼滤波的信号模型(一维)如下:

离散系统的n维状态方程:x(k)=Akxk-1+wk-1

离散系统的m维测量方差:yk=ckxk+vk

Ak 表示状态变量之间的增益矩阵,ck 为状态变量与输出信号之间的增益矩阵,不随时间发生变化,动态噪声wk 与观测噪声vk 都是零均值的正态噪声,且两者互不相关,Rk=var[vk] =E[vkvkT] 为量测噪声协方差矩阵,Qk=var[wk] =E[wkwkT] 为动态噪声协方差矩阵。

系统初始条件为Ex0=μ0

varx0 =E[( x-μ0)(x-μ0)T ]=p0

cov[x0 ,wk]=Ex0wkT=0

cov[x0 ,vk]=Ex0vkT=0

卡尔曼滤波的基本思想是先不考虑激励噪声wk 和观测噪声vk ,得到的状态估计值xk 和观测数据的估计值yk ,再用观测数据的估计误差yk=yk-yk 去修正状态的估计值xk ,通过选择修正矩阵H使得状态估计误差的均方值Pk 最小。

卡尔曼滤波的递推公式如下:

xk=Akxk-1+Hk(yk-CkAkxk-1)

Hk=Pk'CkT(CkPk'CkT+Rk)-1

Pk'=AkPk-1AkT+Qk-1

Pk=(I-HkCk)Pk'

假设初始条件Ak,Ck,Qk,Rk,yk ,xk-1,Pk-1 已知,其中x0=Ex0 , P0=var[x0] ,则卡尔曼滤波的递推流程如下

二、实验内容

随机信号 服从 过程,它是一个宽带过程,参数如下:

(1)通过观测方程是方差为1的高斯白噪声,要求分别利用Wiener滤波器和Kalman滤波器通过测量信号估计的波形。

(2)将 的方差改为4,按(1)中要求,重新估计 的波形。

自行选择Wiener滤波器的阶数,自行选择实验扩展内容,写出实验报告,并进行相关分析。

三、实验过程

3.1维纳滤波器

利用维纳滤波测量信号时,建立模型如下:

1)将随机信号X(n)看成是由典型白噪声序列源W(n)激励一个线性系统产生,用一个差分方程表示xn-1.352xn-1+1.338xn-2-0.662xn-3+0.24xn-4=w(n) 。进行Z变换得到Hz=X(z)W(z)=11-1.352z-1+1.338z-2-0.662z-3+0.24z-4 ,均值为1的高斯白噪声序列W(n)可以用randn函数产生,再利用函数X=filter(B,A,W)产生随机信号X(n)。

2)观测方程是Y(n)=X(n)+V(n),V(n)是方差为1的高斯白噪声,产生进入维纳滤波器的信号。

维纳滤波仿真流程如下:

3.2卡尔曼滤波器

卡尔曼滤波实际由两个过程组成:预测与校正。在预测阶段,滤波器使用上一状态的估计,做出对当前状态的预测。在校正阶段,滤波器利用对当前状态的观测值修正在预测阶段获得的预测值,以获得一个更接进真实值的新估计值。采用最陡下降算法,搜索方向为梯度负方向,每一步更新都使梯度函数值最小。

卡尔曼滤波仿真流程如下:

四、实验结果

4.1 维纳滤波器实验结果

(1)维纳滤波器的阶数取101阶,观测点数取100,噪声方差为1时,通过仿真得到真实轨迹,观测样本及估计轨迹的比较图像,和通过仿真得到的平均误差如图4.1所示。

(a)真实轨迹、观测样本及估计轨迹的比较                                                            (b)平均误差

图4.1 维纳滤波(噪声方差取1)

从图4.1(a)可以看出,利用维纳滤波器通过测量信号估计真实信号的波形,得到的估计轨迹接近于真实轨迹。当噪声方差为1时,估计轨迹与真实轨迹间的误差很小。

从图4.1(b)可以看出,利用维纳滤波器通过测量信号估计真实信号的波形,当噪声方差为1时,得到的估计轨迹与真实轨迹的平均误差较小,而且刚开始的时候平均误差相对较大,随着时间的推移,平均误差有逐渐减小的趋势。

(2)维纳滤波器的阶数取101阶,观测点数取100,噪声方差为4时,通过仿真得到真实轨迹,观测样本及估计轨迹的比较图像,和通过仿真得到的平均误差如图4.2所示。

(a)真实轨迹、观测样本及估计轨迹的比较                                                          (b)平均误差

图4.2 维纳滤波(噪声方差取4)

从图4.2(a)可以看出,当噪声方差为4时,估计轨迹与真实轨迹间的误差变大了。

从图4.2(b)可以看出,当噪声方差为4时,估计轨迹与真实轨迹间的平均误差变大了。而且刚开始的时候平均误差相对较大,随着时间的推移,平均误差有逐渐见效的趋势。

4.2 卡尔曼滤波器实验结果

(1)卡尔曼滤波器的阶数取101阶,观测点数取100,噪声方差为1时,通过仿真得到真实轨迹,观测样本及估计轨迹的比较图像,和通过仿真得到的平均误差如图4.1所示。

 

(a)真实轨迹、观测样本及估计轨迹的比较                                                (b)平均误差

图4.3 卡尔曼滤波(噪声方差取1)

从图4.3(a)可以看出,利用卡尔曼滤波器通过测量信号估计真实信号的波形,得到的估计轨迹接近于真实轨迹。当噪声方差为1时,估计轨迹与真实轨迹间的误差很小。

从图4.3(b)可以看出,利用卡尔曼滤波器通过测量信号估计真实信号的波形,当噪声方差为1时,得到的估计轨迹与真实轨迹的平均误差较小,而且刚开始的时候平均误差相对较大,随着时间的推移,平均误差有逐渐减小的趋势。

(2)卡尔曼滤波器的阶数取101阶,观测点数取100,噪声方差为4时,通过仿真得到真实轨迹,观测样本及估计轨迹的比较图像,和通过仿真得到的平均误差如图4.4所示。

 

(a)真实轨迹、观测样本及估计轨迹的比较                                                             (b)平均误差

图4.4 卡尔曼滤波(噪声方差取4)

从图4.4(a)可以看出,当噪声方差为4时,估计轨迹与真实轨迹间的误差变大了。

从图4.4(b)可以看出,当噪声方差为4时,估计轨迹与真实轨迹间的平均误差变大了。而且刚开始的时候平均误差相对较大,随着时间的推移,平均误差有逐渐见效的趋势。

五、总结与展望

通过此次实验,学会运用MATLAB工具实现构建维纳滤波器和卡尔曼滤波器,并对AR模型进行实验。从实验中,我了解到维纳滤波器是以LMS算法为核心的,而卡尔曼滤波器是从RLS算法演变而来的。从这两点则可以衍生出很多解题思路。最后通过MATLAB演示了信号在加入噪声后,通过维纳滤波器和卡尔曼滤波器进行估计,比较估计值和真实值,发现差别非常的小。希望后面若有遇到维纳滤波和卡尔曼滤波问时,能够回忆起课堂上和实验中学到的知识,充分的利用起来。

六、附录

6.1 维纳滤波器程序

(1)噪声方差为1时:

clc;clear all;maxlag=100;N=100;%观测点数取100x=zeros(N,1);y=zeros(N,1);%%列出状态方程%%x(1)=randn(1,1);x(2)=randn(1,1)+1.352*x(1);x(3)=randn(1,1)+1.352*x(2)-1.338*x(1);x(4)=randn(1,1)+1.352*x(3)-1.338*x(2)+0.602*x(1);for n=5:Nx(n)=1.352*x(n-1)-1.338*x(n-2)+0.602*x(n-3)-0.24*x(n-4)+randn(1,1);%x为真实值endv=randn(N,1);y=x+v;%z_x为观测样本值=真值+噪声%%滤波%%x=x';y=y';xk_s(1)=y(1);%赋初值xk_s(2)=y(2);xk_s(3)=y(3);xk_s(4)=y(4);xk=[y(1);y(2);y(3);y(4)];%%维纳滤波器的生成[rx,lags]=xcorr(y,maxlag,'biased');%观测信号的自相关函数rx1=toeplitz(rx(101:end));%对称化自相关函数矩阵使之成为方阵,滤波器的阶数为101阶rx2=xcorr(x,y,maxlag,'biased');%观测信号与期望信号的互相关函数rx2=rx2(101:end);h=inv(rx1)*rx2';%维纳霍夫方程xk_s=filter(h,1,y);%加噪信号通过滤波器后的输出e_x=0;eq_x=0;e_x1=N:1;%计算滤波的均值,计算滤波误差的均值for i=1:Ne_x(i)=x(i)-xk_s(i);%误差=真实值-滤波估计值end%%作图%%t=1:N;figure(1);plot(t,x,'r-',t,y,'g:',t,xk_s,'b-.');legend('真是轨迹','观测样本','估计轨迹');figure(2);plot(e_x);legend('平均误差');

(2)噪声方差为4时:

clc;clear all;maxlag=100;N=100;%观测点数取100x=zeros(N,1);y=zeros(N,1);%%列出状态方程%%x(1)=randn(1,1);x(2)=randn(1,1)+1.352*x(1);x(3)=randn(1,1)+1.352*x(2)-1.338*x(1);x(4)=randn(1,1)+1.352*x(3)-1.338*x(2)+0.602*x(1);for n=5:Nx(n)=1.352*x(n-1)-1.338*x(n-2)+0.602*x(n-3)-0.24*x(n-4)+randn(1,1);%x为真实值endv=4*randn(N,1);y=x+v;%z_x为观测样本值=真值+噪声%%滤波%%x=x';y=y';xk_s(1)=y(1);%赋初值xk_s(2)=y(2);xk_s(3)=y(3);xk_s(4)=y(4);xk=[y(1);y(2);y(3);y(4)];%%维纳滤波器的生成[rx,lags]=xcorr(y,maxlag,'biased');%观测信号的自相关函数rx1=toeplitz(rx(101:end));%对称化自相关函数矩阵使之成为方阵,滤波器的阶数为101阶rx2=xcorr(x,y,maxlag,'biased');%观测信号与期望信号的互相关函数rx2=rx2(101:end);h=inv(rx1)*rx2';%维纳霍夫方程xk_s=filter(h,1,y);%加噪信号通过滤波器后的输出e_x=0;eq_x=0;e_x1=N:1;%计算滤波的均值,计算滤波误差的均值for i=1:Ne_x(i)=x(i)-xk_s(i);%误差=真实值-滤波估计值end%%作图%%t=1:N;figure(1);plot(t,x,'r-',t,y,'g:',t,xk_s,'b-.');legend('真是轨迹','观测样本','估计轨迹');figure(2);plot(e_x);legend('平均误差');

6.2 卡尔曼滤波器程序

(1)噪声方差为1时:

N=100;x=zeros(N,1);y=zeros(N,1);var=1;I=[1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1];x(1)=randn(1,1);x(2)=randn(1,1)+1.352*x(1);x(3)=randn(1,1)+1.352*x(2)-1.338*x(1);x(4)=randn(1,1)+1.352*x(3)-1.338*x(2)+0.602*x(1);for n=5:Nx(n)=1.352*x(n-1)-1.338*x(n-2)+0.602*x(n-3)-0.24*x(n-4)+randn(1,1);endv=randn(N,1);y=x+v;xk_s(1)=y(1);xk_s(2)=y(2);xk_s(3)=y(3);xk_s(4)=y(4);Ak=[1.352,-1.338,0.662,0.240;1,0,0,0;0,1,0,0;0,0,1,0];Ck=[1,0,0,0];Rk=[1];Pk=[1 0 0 00 1 0 00 0 1 00 0 0 1];xk=[y(1);y(2);y(3);y(4)];Qk=[1];for r=5:Nyk=y(r);Pk1=Ak*Pk*Ak'+Qk;Hk=Pk1*Ck'*inv(Ck*Pk1*Ck'+Rk);xk=Ak*xk+Hk*(yk-Ck*Ak*xk);Pk=(I-Hk*Ck)*Pk1;xk_s(r)=xk(1,1);ende_x=0;for i=1:Ne_x(i)=x(i)-xk_s(i);endt=1:N;figure(1);plot(t,x,'r-',t,y,'g:',t,xk_s,'b-');legend('真实轨迹','观测样本','估计轨迹');figure(2);plot(e_x);legend('平均误差');

(2)噪声方差为4时:

N=100;x=zeros(N,1);y=zeros(N,1);var=2;I=[1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1];x(1)=randn(1,1);x(2)=randn(1,1)+1.352*x(1);x(3)=randn(1,1)+1.352*x(2)-1.338*x(1);x(4)=randn(1,1)+1.352*x(3)-1.338*x(2)+0.602*x(1);for n=5:Nx(n)=1.352*x(n-1)-1.338*x(n-2)+0.602*x(n-3)-0.24*x(n-4)+randn(1,1);endv=4*randn(N,1);y=x+v;xk_s(1)=y(1);xk_s(2)=y(2);xk_s(3)=y(3);xk_s(4)=y(4);Ak=[1.352,-1.338,0.662,0.240;1,0,0,0;0,1,0,0;0,0,1,0];Ck=[1,0,0,0];Rk=[1];Pk=[1 0 0 00 1 0 00 0 1 00 0 0 1];xk=[y(1);y(2);y(3);y(4)];Qk=[1];for r=5:Nyk=y(r);Pk1=Ak*Pk*Ak'+Qk;Hk=Pk1*Ck'*inv(Ck*Pk1*Ck'+Rk);xk=Ak*xk+Hk*(yk-Ck*Ak*xk);Pk=(I-Hk*Ck)*Pk1;xk_s(r)=xk(1,1);ende_x=0;for i=1:Ne_x(i)=x(i)-xk_s(i);endt=1:N;figure(1);plot(t,x,'r-',t,y,'g:',t,xk_s,'b-');legend('真实轨迹','观测样本','估计轨迹');figure(2);plot(e_x);legend('平均误差');

随机数字信号处理实验报告一——维纳滤波和卡尔曼滤波相关推荐

  1. 随机数字信号处理实验报告三——Levinson和Burg递推法MATLAB实现

    完整的实验报告下载连接https://download.csdn.net/download/LIsaWinLee/14884452 一.实验原理 随机信号的功率谱密度用来描述信号的能量特征随频率的变化 ...

  2. 随机数字信号处理实验报告二——自适应滤波MATLAB

    完整的实验报告下载链接https://download.csdn.net/download/LIsaWinLee/14884404 一.实验原理 自适应滤波器由参数可调的数字滤波器和自适应算法两部分组 ...

  3. matlab fft谱分析实验报告,数字信号处理实验报告-FFT算法的MATLAB实现.doc

    数字信号处理实验报告-FFT算法的MATLAB实现.doc 数字信号处理 实验报告实验二FFT算法的MATLAB实现一.实验目的通过本实验的学习,掌握离散傅立叶变换的理论,特别是FFT的基本算法以及其 ...

  4. matlab数字信号处理实验报告,数字信号处理实验报告一 离散信号及其MATLAB实验...

    数字信号处理 离散信号及其MATLAB实验 南昌航空大学实验报告 2012 年 04 月 06 日 课程名称: 数字信号处理 实验名称: 离散信号及其MATLAB实现 班级: 090423班 学号: ...

  5. matlab数字信号处理实验报告,数字信号处理实验报告(Matlab与数字信号处理基础).doc...

    西华大学实验报告(理工类) 开课学院及实验室:电气信息学院 6A-205实验时间 :年月日学 生 姓 名学号成 绩学生所在学院电气信息学院年级/专业/班课 程 名 称数字信号处理课 程 代 码实验项目 ...

  6. matlab数字信号处理实验报告,【实验设计论文】Matlab的数字信号处理课程实验设计(共3490字)...

    摘要:本文设计了一个基于Matlab的"数字信号处理"课程综合性实验.该实验把"数字信号处理"课程中的许多离散的知识点串接了起来,包括采样.量化.滤波器设计.滤 ...

  7. 信号加白噪声分贝matlab程序,数字信号处理 实验报告.doc

    PAGE 1 1.DFT在信号频谱分析中的应用 1.1设计目的 (1) 熟悉DFT的性质. (2) 加深理解信号频谱的概念及性质. (3)了解高密度谱与高分辨率频谱的区别. 1.2设计任务与要求 (1 ...

  8. 随机数字信号处理期末大报告——基于卡尔曼滤波的自由落体运动目标跟踪MATLAB实现

    完整的实验报告下载随机数字信号处理期末大报告-基于卡尔曼滤波的自由落体运动目标跟踪.docx-机器学习文档类资源-CSDN下载 ​​​​​​ 程序包及所需数据下载 target tracking us ...

  9. Matlab验证dtft共轭性质,数字信号处理实验4重点.docx

    深 圳 大 学 实 验 报 告 课程名称: 数字信号处理实验 实验项目名称: 实验4 学院: 信息工程学院 专业: 电子信息工程 指导教师: 陈佳义 报告人: 学号: 班级: 实验时间: 11.12 ...

最新文章

  1. Android 天气预报源码
  2. java安装好了打不开机_这都不犯规?王骁辉尺度把握得真好 难怪0+0+0能打20分钟...
  3. 【Java 虚拟机原理】Java 类中的类加载初始化细节 ( 只使用类中的常量时加载类不会执行到 ‘初始化‘ 阶段 )
  4. Django+xadmin打造在线教育平台(十)
  5. python2.7 print函数
  6. 深入剖析全链路灰度技术
  7. java基础:8.1 异常
  8. vue 打包html静态页面,vue项目打包、vue项目打包后空白界面解决办法
  9. Git和码云项目平台使用文档
  10. C4D模型工具—提取样条
  11. 广东再增一项重大跨海工程 黄茅海跨海通道将开建
  12. Socket+华为云 实现广域网五子棋在线对战
  13. 幼儿园进行计算机培训心得体会,幼儿园教师课堂培训心得感悟五篇
  14. 读书心得:一个程序员的自我反思
  15. a该内存不能为“read”或“written解决方案
  16. c语言程序设计陈彦君,2008 年度焦作学科研成果奖励登记表(论文).doc
  17. 独热编码 (One-Hot Encoding) 介绍及MATLAB命令
  18. Excel从txt导入文本并将空行删除
  19. 整数规划学习笔记(一)
  20. STC89C52烧录不了

热门文章

  1. Unity3d UGUI基础控件使用(一)
  2. 推荐一款免费的数据库管理工具,比Navicat还要好用,功能还很强大
  3. 查看SpringBoot内置tomcat版本
  4. android去除root,RE管理器root权限彻底清除教程[图]
  5. DirectX (9) 纹理映射
  6. 面试常问集锦——分布式系列
  7. veryCD和emule的安装
  8. linux radius mysql_linux中怎么配置radius服务器
  9. keil5如何兼容MDK 和 STC51
  10. 华为模拟器配置vlan教程