收藏 分销(赏)

实验报告-卡尔曼滤波.doc

上传人:丰**** 文档编号:4325701 上传时间:2024-09-06 格式:DOC 页数:24 大小:202.16KB
下载 相关 举报
实验报告-卡尔曼滤波.doc_第1页
第1页 / 共24页
实验报告-卡尔曼滤波.doc_第2页
第2页 / 共24页
点击查看更多>>
资源描述
数字信号处理实验报告 姓名: 专业: 通信与信息系统 学号: 日期:2015.11 实验内容 任务一: 一连续平稳的随机信号,自相关函数,信号为加性噪声所干扰,噪声是白噪声,测量值的离散值为已知,,-3.2,-0.8,-14,-16,-17,-18,-3.3,-2.4,-18,-0.3,-0.4,-0.8,-19,-2.0,-1.2,-11,-14,-0.9,-0.8,10,0.2,0.5,-0.5,2.4,-0.5,0.5,-13,0.5,10,-12,0.5,-0.6,-15,-0.7,15,0.5,-0.7,-2.0,-19,-17,-11,-14,自编卡尔曼滤波递推程序,估计信号的波形。 任务二: 设计一维纳滤波器。 (1) 产生三组观测数据:首先根据产生信号,将其加噪(信噪比分别为20dB,10dB,6dB),得到观测数据,,。 (2) 估计,,,的AR模型参数。假设信号长度为,AR模型阶数为,分析实验结果,并讨论改变,对实验结果的影响。 实验任务一 1. 卡尔曼滤波原理 1.1 卡尔曼滤波简介 早在20世纪40年代,开始有人用状态变量模型来研究随机过程,到60年代初,由于空间技术的发展,为了解决对非平稳、多输入输出随机序列的估计问题,卡尔曼提出了递推最优估计理论。它用状态空间法描述系统,由状态方程和量测方程所组成,即知道前一个状态的估计值和最近一个观测数据,采用递推的算法估计当前的状态值。由于卡尔曼滤波采用递推法,适合于计算机处理,并且可以用来处理多维和非平稳随机信号,现已广泛应用于很多领域,并取得了很好的结果。卡尔曼滤波一经出现,就受到人们的很大重视,并 在实践中不断丰富和完善,其中一个成功的应用是设计运载体的高精度组合导航系统。卡尔曼滤波具有以下的特点: (1) 算法是递推的,且状态空间法采用在时域内设计滤波器的方法,因而适用于多维随机过程的估计;离散型卡尔曼算法适用于计算机处理。 (2) 用递推法计算,不需要知道全部过去的值,用状态方程描述状态变量的动态变化规律,因此信号可以是平稳的,也可以是非平稳的,即卡尔曼滤波适用于非平稳过程。 (3) 卡尔曼滤波采取的误差准则仍为估计误差的均方值最小。 1.2 卡尔曼滤波的状态方程和测量方程 假设某系统时刻的状态变量为,状态方程和量测方程(输出方程)表示为 其中,是状态变量;表示输入信号是白噪声;是观测噪声;是观测数据。 为了推导简单,假设状态变量的增益矩阵不随时间发生变化,,都是均值为零的正态白噪声,方差分别是和,并且初始状态与,都不相关,表示相关系数。即: 其中 1.3 卡尔曼滤波的递推算法 卡尔曼滤波采用递推算法来实现,其基本思想是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号(即观测数据)的估计值,再用输出信号的估计误差加权后校正状态变量的估计值,使状态变量估计误差的均方值最小。因此,卡尔曼滤波器的关键是计算出加权矩阵的最佳值。 当不考虑观测噪声和输入信号时,状态方程和量测方程为 显然,由于不考虑观测噪声的影响,输出信号的估计值与实际值是有误差的,用表示 为了提高状态估计的质量,用输出信号的估计误差来校正状态变量 其中,为增益矩阵,即加权矩阵。经过校正后的状态变量的估计误差及其均方值分别用和表示,把未经校正的状态变量的估计误差的均方值用表示 卡尔曼滤波要求状态变量的估计误差的均方值为最小,因此卡尔曼滤波的关键即为通过选择合适的,使得取得最小值。首先推导状态变量的估计值和状态变量的的估计误差,然后计算的均方值,通过化简,得到一组卡尔曼滤波的递推公式: 假设初始条件,,,,,,已知,其中,,那么递推流程如下: ,, 2. 卡尔曼滤波递推程序编程思想 题目分析 (1) 由于信号为加性噪声所干扰,可知,所以 (2) 又因为噪声为白噪声,所以 (3) 因为,所以 由此可知,,即,可得到:,因为抽样间隔,所以:。 (4)因此,所以 因此 编程分析 由上面的分析可知初始条件,,,,已知,在仿真中假设,则,,由以上参数可得卡尔曼实际递推公式 将得到的公式代入前面分析的递推公式,即可进行迭代得到结果。 3. MATLAB源代码 根据以上分析,编写matlab程序如下: %% %---------------卡尔曼滤波----------------- %-----说明 %X(k+1)=Ak*X(k)+W(k); %Y(k)=Ck*X(k)+V(k) %% clear;clc; %基本参数值 Ak=exp(-0.02);Ck=1; Qk=1-exp(-0.04);Rk=1; %初始值设置 X0=0;P0=1; %观测值y(k) Y=[-3.2 -0.8 -14 -16 -17 -18 -3.3 -2.4 -18 -0.3 -0.4 -0.8 -19 -2.0 -1.2 ... -11 -14 -0.9 0.8 10 0.2 0.5 2.4 -0.5 0.5 -13 0.5 10 -12 0.5 -0.6 -15 -0.7 15 ... 0.5 -0.7 -2.0 -19 -17 -11 -14]; %数据长度 N=length(Y); for k=1:N if k==1 %k=1时由初值开始计算 P_(k)=Ak*P0*Ak'+Qk; H(k)=P_(k)*Ck'*inv(Ck*P_(k)*Ck'+Rk); X(k)=Ak*X0+H(k)*(Y(k)-Ck*Ak*X0); I=eye(size(H(k))); P(k)=(I-H(k)*Ck)*P_(k); else %k>1时,开始递推 %递推公式 P_(k)=Ak*P(k-1)*Ak'+Qk; H(k)=P_(k)*Ck'*inv(Ck*P_(k)*Ck'+Rk); X(k)=Ak*X(k-1)+H(k)*(Y(k)-Ck*Ak*X(k-1)); I=eye(size(H(k))); P(k)=(I-H(k)*Ck)*P_(k); end end M=1:N;T=0.02*M; %作图,画出x(t)的波形 figure(1) plot(T,Y,'r','LineWidth',1); xlabel('t');ylabel('y(t)'); title('卡尔曼滤波-测量信号y(t)波形'); grid; figure(2) plot(T,X,'b','LineWidth',1); xlabel('t');ylabel('x(t)'); title('卡尔曼滤波-估计信号x(t)波形'); grid; 4. 实验结果 实验任务二 1. 维纳滤波器原理 维纳-霍夫方程 当是一个长度为的因果序列(即一个长度为的滤波器)时,维纳-霍夫方程表述为 定义 则可写成矩阵的形式,即 对上式求逆,得到 由以上式子可知:若已知期望信号与观测数据的互相关函数及观测数据的自相关函数,则可以通过矩阵求逆运算,得到维纳滤波器的最佳解。同时可以看到,直接从时域求解因果的维纳滤波器,当选择的滤波器的长度较大时,计算工作量很大,并且需要计算的逆矩阵,从而要求的存储量也很大 预测是根据观测到对的过去数据来估计当前或将来的信号值。维纳预测是已知以前时刻的个数据,估计当前时刻,或者未来时刻的信号值,即估计,估计得到的结果仍然要求满足均方误差最小的准则。信号可以预测是由于信号内部存在着关联性。预测是利用数据前后的关联性,根据其中一部分推知其余部分。 一步线性预测的时域解 已知,,…,,预测,假设噪声,这样的预测成为一步线性预测。设定系统的单位脉冲响应为。根据现行系统的基本理论,输出信号 令,则 预测误差 其中 要使均方误差为最小值,要求 ,,..., 又因为,我们可以得到 ,,..., 所以 ,,..., (1) 由于预测器的输出是输入信号的线性组合,所以可得: 以上说明误差信号与输入信号满足正交性原理,预测误差与预测信号值同样满足正交性原理。预测误差的最小均方值 (2) 由(1)(2)联立方程组,写成矩阵形式可得 这就是有名的Yule-Walker(维纳-霍夫)方程。 2. 实验编程思想 在本实验中,首先根据要求产生加噪不同的观测数据,,,然后可利用已知条件代入Yule-Walker方程,即可求解AR模型参数。 在本实验中,假设,信号的初值。 3. MATLAB代码 function Wiener_predict(L,N) %clc;clear; %信噪比 SN1 = 6; SN2 = 10;SN3 = 20; %产生信号s(n) a=0.2;W = random('norm', 0, 1, L, 1); S(1) = 0; for n = 2 : L S(n) = a * S(n-1) + W(n); end %产生观测信号 Am = sum(abs(S).^2) / L; P1 = Am / (10^(SN1/20)); P2 = Am / (10^(SN2/20));P3 = Am / (10^(SN3/20)); V1 = random('norm', 0, P1, L, 1);V2 = random('norm', 0, P2, L, 1);V3 = random('norm', 0, P3, L, 1); for n=1:L X1(n) = S(n) + V1(n); X2(n) = S(n) + V2(n); X3(n) = S(n) + V3(n); end subplot(2,2,1);plot(S,'b');title('信号S(n)');ylabel('幅度');grid on; subplot(2,2,2);plot(X1,'b');title('观测信号X1(n)');ylabel('幅度');grid on; subplot(2,2,3);plot(X2,'b');title('观测信号X2(n)');ylabel('幅度');grid on; subplot(2,2,4);plot(X3,'b');title('观测信号X3(n)');ylabel('幅度');grid on; fprintf('\n对X1信号来说 N 阶模型参数和误差分别为:\n')AR(X1,N); fprintf('\n对X2信号来说 N 阶模型参数和误差分别为:\n')AR(X2,N); fprintf('\n对X3信号来说 N 阶模型参数和误差分别为:\n')AR(X3,N); function AR(X,N) L = length(X);rx = zeros(1, N + 1);R = zeros(N + 1, N + 1); for i = 1 : (N + 1) sum = 0; for j = 1 : (L - i + 1); sum = sum + X(j) * X(j + i - 1); end rx(i) = sum / (L - i + 1); end for i = 1 : N + 1 R(i, 1:(i-1)) = rx((i-1):-1:1); R(i, i:(N+1)) = rx(1:(N - i + 2)); end zx = rx(2:(N+1));ap = inv(R(1:N, 1:N)) * (-zx)'; a = [1, ap'];e = rx(1) + zx * ap; disp(['AR系数: ',num2str(a)]);disp(['均方误差:',num2str(e)]); function Wiener_new1(L,N) %% 产生三组观测数据 %信噪比(dB) SNR1 = 20; SNR2 = 10;SNR3 = 6; %产生信号s(n) a=0.2;W = random('norm', 0, 1, L, 1); S(1) = 0; for n = 2 : L S(n) = a * S(n-1) + W(n); end %加噪声产生观测限号 X1= awgn(S,SNR1,'measured','linear'); X2= awgn(S,SNR2,'measured','linear'); X3= awgn(S,SNR3,'measured','linear'); %画出信号图像 subplot(2,2,1);plot(S,'b'); title('信号S(n)'); ylabel('幅度');grid on; subplot(2,2,2);plot(X1,'b');title('观测信号X1(n)');ylabel('幅度');grid on; subplot(2,2,3);plot(X2,'b');title('观测信号X2(n)');ylabel('幅度');grid on; subplot(2,2,4);plot(X3,'b');title('观测信号X3(n)');ylabel('幅度');grid on; %% 估计AR模型参数 fprintf('\n对X1信号来说 N 阶模型参数和误差分别为:\n');AR(X1,N); fprintf('\n对X2信号来说 N 阶模型参数和误差分别为:\n');AR(X2,N); fprintf('\n对X3信号来说 N 阶模型参数和误差分别为:\n');AR(X3,N); function AR(X,N) L = length(X);rx = zeros(1, N + 1);R = zeros(N + 1, N + 1); for i = 1 : (N + 1) sum = 0; for j = 1 : (L - i + 1); sum = sum + X(j) * X(j + i - 1); end rx(i) = sum / (L - i + 1); end for i = 1 : N + 1 R(i, 1:(i-1)) = rx((i-1):-1:1); R(i, i:(N+1)) = rx(1:(N - i + 2)); end zx = rx(2:(N+1)); ap = inv(R(1:N, 1:N)) * (-zx)'; a = [1, ap'];e = rx(1) + zx * ap; disp(['AR系数: ',num2str(a)]);disp(['均方误差:',num2str(e)]); 4. 实验结果与分析 (1) 观测数据产生 图1. 原始信号与观测信号(L=50) (2) 模型阶数N对实验结果的影响 N=1 对X1信号来说 N 阶模型参数和误差分别为: 对X1信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.27766 均方误差:1.1289 对X2信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.29326 均方误差:0.97283 对X3信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.26441 均方误差:1.0531 N=2 对X1信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.34494 0.2854 均方误差:1.0958 对X2信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.1696 0.10742 均方误差:1.1639 对X3信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.19532 0.17033 均方误差:0.92331 N=3 对X1信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.10673 0.050928 -0.19364 均方误差:1.4197 对X2信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.35451 0.62013 -0.75585 均方误差:0.95739 对X3信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.12221 0.14428 -0.34185 均方误差:0.99317 N=5 对X1信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.35515 0.56619 -0.54005 0.65254 -0.51327 均方误差:1.2405 对X2信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.27343 0.10227 0.028944 0.21289 -0.2508 均方误差:1.3557 对X3信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.36594 0.41414 -0.41665 0.66894 -0.60712 均方误差:1.1025 分析: 由以上实验结果可知:在数据的长度一定的条件下,改变AR模型的阶数,均方误差会改变,当阶数在某个值时,均方误差的值最小,因此滤波器的阶数对实验结果有很大影响。在本次实验中,仿真情况有限,在以上仿真中我们可以看到当模型阶数N为某一固定值时,均方误差明显较小。 (3) 信号长度L对实验结果的影响 L=100 对X1信号来说 N 阶模型参数和误差分别为: AR系数: 1 0.022914 0.0078698 均方误差:1.2033 对X2信号来说 N 阶模型参数和误差分别为: AR系数: 1 0.017414 0.19629 均方误差:1.1607 对X3信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.012789 0.13086 均方误差:1.1483 L=200 对X1信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.17679 0.073726 均方误差:1.3371 对X2信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.2649 0.16751 均方误差:0.99844 对X3信号来说 N 阶模型参数和误差分别为: AR系数: 1 -0.27145 0.17666 均方误差:0.99289 分析: 由以上仿真结果可知,实验中存在误差,但仍然可以看出,随着信号长度的增加,均方误差减小,预测更准确。 L=100,N=1 X1信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.15954 预测误差的最小均方值:1.0612 X2信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.1682 预测误差的最小均方值:1.1551 X3信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.1161 预测误差的最小均方值:1.2883 N=2 X1信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.20658 0.25733 预测误差的最小均方值:0.98824 X2信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.10574 0.15188 预测误差的最小均方值:1.0349 X3信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.17376 0.23089 预测误差的最小均方值:1.2323 N=5 X1信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.21587 0.22397 -0.24306 0.24469 -0.13453 预测误差的最小均方值:0.88869 X2信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.2537 0.31482 -0.19014 0.12243 0.040983 预测误差的最小均方值:0.89859 X3信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.27812 0.33384 -0.27881 0.25752 -0.11447 预测误差的最小均方值:1.0384 N=10 X1信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.085746 0.17042 -0.24887 0.3049 -0.29013 0.34871 -0.33129 0.48704 -0.39942 0.37265 预测误差的最小均方值:0.96799 X2信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.10183 0.20689 -0.18967 0.17418 -0.023448 -0.011321 0.0093937 0.18436 -0.1808 0.13523 预测误差的最小均方值:0.98478 X3信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.21104 0.51543 -0.60156 0.76905 -0.82715 0.92023 -0.90162 0.95174 -0.74381 0.6246 预测误差的最小均方值:0.96821 L=1000 X1信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.29706 0.2975 -0.25122 0.30972 -0.26171 预测误差的最小均方值:0.99801 X2信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.23764 0.2173 -0.15246 0.2091 -0.16053 预测误差的最小均方值:1.0381 X3信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.29651 0.28487 -0.21534 0.26745 -0.21993 预测误差的最小均方值:1.0984 L=500 X1信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.34838 0.37975 -0.33385 0.3446 -0.2554 预测误差的最小均方值:1.1584 X2信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.32197 0.34402 -0.24965 0.26156 -0.26372 预测误差的最小均方值:1.1777 X3信号: N 阶模型参数和预测误差的最小均方值分别为: AR系数: 1 -0.29053 0.28967 -0.19091 0.17643 -0.14395 预测误差的最小均方值:1.405
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服