自适应滤波实例讲义.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
自适应滤波实例讲义

一、自适应滤波器 自适应滤波器由自适应处理器和自适应算法两部分组成,自适应处理器也就是滤波器,可以是FIR数字滤波器或IIR数字滤波器,也可以是格型数字滤波器。原理图如下: 输入信号x(n)通过数字滤波器后产生输出信号y(n),然后将其与参考信号(也就是期望响应)d(n)进行比较,形成误差信号e(n)。然后e(n)通过自适应算法对滤波器参数进行调整,最终使e(n)的均方值最小。所以说,实际上自适应滤波器在设计时不需要事先知道输入信号和噪声的统计特性知识,它是一种能够自动调整本身参数的特殊维纳滤波器,一旦输入信号的统计特性发生变化,它能够跟踪这种变化,自动调整参数,使滤波效果达到最佳。 在不同应用场合,这些输入输出信号代表着不同的具体内容,下面是一个常见的实例。下图是自适应干扰抵消器的原理图: x(n)+N(n) d(n) - + e(n) y(n)= 期望响应是信号x(n)和噪声N(n)之和,即,自适应处理器的输入是与相关的另一个噪声。当与不相关时,自适应处理器将调整自己的参数,使自身的输出成为的最佳估计。e(n)=d(n)-y(n)=x(n)+N(n)-,这样,将逼近信号,且其均方值为最小。噪声就得到了一定程度的抵消。 二、RLS算法 下面主要介绍FIR自适应滤波器的自适应算法。FIR自适应滤波器除了之前介绍的LMS算法外,还有另一种算法,RLS算法。 1.RLS基本概念 RLS(Recursive Least-Squares),递归最小二乘算法。该算法实际上是FIR维纳滤波器的一种时间递归算法,它严格以最小二乘方准则为依据。 RLS算法的关键是用二乘方的时间平均的最小化准则,取代最小均方准则,并按时间进行迭代计算。具体来说,是要对初始时刻到当时时刻所有误差的平方进行平均并使其最小化,再按照这一准则确定FIR滤波器的权系数矢量。 其特点:对非平稳信号的适应性好;算法收敛速度快,估计精度高,稳定性好;缺点是每次迭代计算量很大(对于L阶横向滤波器,计算量数量级为),不利于实时性处理。 RLS算法原理 对于非平稳输入信号,为了能很好地进行跟踪,常引入一个指数加权因子(也就是遗忘因子)对该式进行修正,得 由RLS算法的依据,最小均方误差准则判定权矢量 整理为标准方程 左边括号中这部分定义为R(n),右边这部分定义为P(n),则上式简化为 得出维纳解 然后,利用迭代形式展开,将上式化解为 其中e(n|n-1)为预测误差,即输出信号误差。 RLS算法为迭代算法,上面讲述的是算法原理,现将算法步骤总结如下 3.RLS算法步骤 (1) 在时刻n,已获得w(n-1),和d(n),x(n)也已存储在滤波器的延时部件中 (2)计算出滤波器输出响应y(n)和误差e(n) (3)进行第n+1次迭代 三、程序 选用正弦信号并加入噪声,然后用RLS自适应滤波器进行噪声抵消,实现的MATLAB程序如下: clear all; close all; % 周期信号的产生 N=1000; Fs=500; n=0:N-1; t=n/Fs; xs=(sin(2*pi*5*t));%将期望输出信号改为矩阵形式 %作图输入信号 figure(1); subplot(211);plot(t,xs);grid; ylabel(fuzhi); title(输入周期性信号); % 噪声信号的产生 xn=( 0.6*randn(1,length(t))); % 输入信号序列 %作图显示噪声信号 subplot(212);plot(t,xn);grid; ylabel(幅度);xlabel(时间); title(随机噪声信号); % 实际输入信号 d=xs; % 定义实际输入信号 %将噪声和期望输出信号叠加得到实际输入信号 x=xs+xn; N=10; w=(zeros(1,N)); % 定义一个全为0的w矩阵 M=length(x); %取得实际输入信号的特征值 p=0.1*eye(N,N); % 相关矩阵,p函数返回N*N矩阵 a=0.1; %定义空矩阵用于存储数据 y=(zeros(1,M)); % 实际输出序列 e=(zeros(1,M)); % 误差序列 sum1=zeros(N,N); sum2=ze

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档