基于MATLAB的自适应滤波算法的研究

更新时间:2023-10-15 20:40:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

前言

基于MATLAB的自适应滤波算法的研究

1 前言

滤波技术是信号处理的一项基本的重要技术,利用这种技术,可以抑制信号中的干扰, 获取需要的信息。在数据通信过程中,需要传输的信号是扩展频谱信号, 其中可能混有来自另一频带用户的信号检测中,在宽带信号中可能混有企图破坏检测系统的窄带干扰信号。用于消除上述干扰的滤波器,既可以是固定参数的,也可以是自适应的。如果采用固定参数的设计方法研制出一种认为是最佳的滤波器,就意味着设计者预先知道了一切可能的输入条件(包括有用信号与噪声的先验知识)以及系统在这些条件下的响应。然而,实际系统的状态往往随时间和空间的不断变化而变化, 输入条件的范围即使是在统计意义下也可能是不确切的,例如上述干扰的具体频带事先是无法知道的。所以固定参数滤波器在这种情况下是失效,要实现在这种条件下的滤波,必须要求系统的参数能随着条件的变化而自行调整,这样的系统称为自适应系统。用这种系统对信号进行的变换、加工就是自适应信号处理,也可以统称为自适应滤波。由于自适应滤波器具有自动地调节自身参数的能力,能极大的保证的不失真,可以更好更快地解决上述问题。自适应滤波可以用DSP 构成的系统来实现,随着大规模集成电路技术的发展,市场上出现许多能够适应实时数字信号处理要求的DSP 芯片, 其中美国德州仪器公司生产的T MS320C32 浮点DSP,其处理能力达到40 位浮点精度,浮点数操作能力达到60MFLOPS,指令速度为30MIPS,因此在许多数据采集系统和实时信号处理系统中得到了广泛的应用。

自适应滤波算法的研究是当今自适应信号处理中最为活跃的研究课题之一。滤波是当今信息处理领域的一种极其重要的技术。本文阐述了自适应滤波器的设计方法,分析了运用MATLAB软件进行自适应滤波器的设计过程。本文在论述自适应滤波基本原理的基础上,重点讨论了基于LMS的自适应滤波器算法和基于RLS的自适应滤波器算法。

第 1 页( 共 40 页)

基于MATLAB的自适应滤波算法的研究

2 选题背景

2.1研究目的和意义

自1967年B.Widrow等人提出自适应滤波器以来,在短短的四十年中,自适应滤波器的发展很快,已广泛地用于系统模型识别,通信信道的自适应均衡,雷达与声纳的波束形成,减少或消除心电图中的周期干扰,噪声中信号的检测、跟踪、增强和线性预测等。近十几年,它在更多的应用场合(如回波消除、色散信道的均衡、系统辨识、信号增强、自适应波速形成、噪声消除以及控制领域等)也取得了成功[1]。

自适应滤波技术包括自适应时域滤波、自适应空域滤波(即自适应阵列)等。它是从六十年代初发展起来的,与信息论、检测及最佳估计理论、滤波器理论密切相关信号处理学科的一个重要分支,随着超大规模集成电路(VLSI)技术和计算机技术的迅速发展和自适应滤波理论本身的不断完善,使得其应用愈来愈广泛,已遍及通信、语音信号处理、图像处理、模式识别、系统辨识及自动控制等领域,是目前最活跃的研究领域之一[3]。

自适应滤波技术的核心问题是自适应算法的性能问题,提出的自适应算法主要有最小均方(LMS)算法、递归最小二乘(RLS)算法及相应的改进算法如:归一化(NLMS)算法、变步长(SVSLMS)算法、递归最小二乘方格形(RLSL)算法等。这些算法各有特点,适用于不同的场合。研究自适应算法是自适应滤波器的一个关键内容,算法的特性直接影响滤波器的效果。

自适应滤波器通常由两个不同的部分构成:滤波器部分,其结构适合于完成所需要的处理功能;自适应算法部分,用来调整上述滤波器的系数。在本文中,我们主要是设计稳健的自适应算法来调整其系数[4]。

随着超大规模集成电路(VLSI)技术的迅速进步以及自适应滤波技术理论的研究和发展,自适应滤波在噪化信号的检测增强、噪音干扰的抵消、波形编码的线性预测,雷达声纳系统的阵列处理和波束形成、通信系统的自适应均衡、图象自适应压缩编码、图象的自适应增强复原、图象识别的自适应分割以及未知系统的自适应参数辨识等方面获得了广泛的应用。

鉴于自适应滤波器具有自学习、自跟踪、对参数经常变化的动态系统有较好控制效果的特性,我们有必要对其进行深入的研究,特别是对自适应滤波器新算法的研究。

第 2 页(共 40 页)

选题背景

本论文主要阐述了基于自适应算法设计自适应滤波器的基本过程,研究最小均方算法(LMS算法),完成基于LMS算法的自适应滤波器的设计过程。在设计过程中,在将一无法预知信号与噪声的特性的信号输入自适应滤波器,滤波器根据信号的特性,随时更改参数,以达到滤波器设计的最优化。利用Matlab仿真软件实现LMS自适应滤波算法,并从仿真结果得知步长因子是自适应滤波器中很重要的参数,以及滤波器的阶数和采样数等,对自适应滤波器降噪以及收敛性能的影响[5]。

2.2国内外研究现状

最早的对于自适应滤波器的研究可以追述到20世纪50年代。它是在维纳滤波,Kalman滤波等线性滤波基础上发展起来的一种最佳滤波方法。

作为其中一项重大突破的数字滤波器,在20世纪60年代中期形成了它的完整而正规的理论。人们根据传统数字滤波器的概念,即根据给定的频率特性指标(低通、高通、带通或带阻,或别的形状的特性参数)来设计并实现数字滤波器外,还深入研究了维纳滤波器和卡尔曼滤波器的数字实现问题。维纳滤波器是根据有用信号和干扰噪声的统计特性(自相关函数或功率谱),以线性最小均方误差估计准则所设计的最佳滤波器,它能最大程度的滤除干扰噪声,提取有用信号。但是,当信号的统计特性偏离设计条件时,它就不再是最佳的了,这使其滤波器在实际应用中受得了限制。

由于空间技术的发展,出现了卡尔曼滤波理论,即利用状态变量模型对非平稳,多输入多输出随机序列作最优估计。现在,卡尔曼滤波器以成功的应用到许多领域,它既可对平稳的和非平稳的随机信号作线性最优滤波,也可作非线性滤波。但卡尔曼滤波器也有其局限性,在设计时,必须知道产生输入过程的系统的状态方程,即要求对信号和噪声的统计特性有先验知识,但在实际中,我们往往难以预知这些统计特性,因此,实现不了真正的最佳滤波[6]。

早在1795年,为了测定行星运动轨道,高斯(K.Gauss)就提出了最小二乘估计法。二十世纪40年代,Weiner和Kolmogorov相继独立地提出了维纳滤波理论。但维纳滤波方法是一种频域方法,而且滤波器是非递推的,不便于实时应用。V.kucera于1979年提出了现代维纳滤波方法[13]。用该方法通过求解Diophantine方程可以直接得到可实现的和显式的维纳滤波器,并可处理多维信号和非平稳随机信号。卡尔曼(R.E.Kalman)于1960年提出的卡尔曼滤波(Kalman Filtering)理论,标志着现代滤波理

第 3 页( 共 40 页)

基于MATLAB的自适应滤波算法的研究

论的建立。卡尔曼滤波方法是一种时域方法,对于具有高斯分布噪声的线性系统,可以得到系统状态的递推最小均方差估计(Reeursive Minimum Mean-Square Estimation,即RMS)。卡尔曼滤波首次将现代控制理论中的状态空间思想引入最优滤波理论,用状态方程描述系统动态模型,用观测方程描述系统观测模型,并可处理时变系统、非平稳信号。由于卡尔曼滤波采用递推计算,因此非常适宜于用计算机来实现。但同时卡尔曼滤波需要知道系统的精确数学模型,并假设系统为线性的,噪声信号也必须为噪声统计特性已知的高斯噪声,并且由于要计算Riccati方程,对高维系统计算量较大[4]。

Windrow等于1967年提出的自适应滤波系统的参数能自动的调整而达到最优状况,而且在设计时,只需要很少的或根本不需要任何关于信号与噪声的先验统计知识。这种滤波器的实现差不多像维纳滤波器那样简单,而滤波器性能几乎如卡尔曼滤波器一样好。自适应滤波器与普通滤波器不同,它的冲激响应或滤波参数是随外部环境的变化而变化的,经过一段自动调节的收敛时间达到最佳滤波的要求。自适应滤波器本身有一个重要的自适应算法,这个算法可以根据输入、输出及原参量信号按照一定准则修改滤波参量,以使它本身能有效的跟踪外部环境的变化。因此,自适应数字系统具有很强的自适应、自动跟踪能力和算法简单易实现性等特点。

自适应数字滤波器和维纳滤波器一样,都是符合某种准则的最佳滤波器。维纳滤波器的参数是固定的,适用于平稳随机信号的最佳滤波,但要设计这种滤波器,必须要求输入信号是平稳的,且具有信号和噪声统计分布规律的先验知识。在实际中,常常无法知道这些先验知识,且统计特性还会变化,因此实现最佳滤波是困难的。

2.3主要研究工作

本文在研究自适应滤波理论的基础上,对几种重要的自适应算法进行了理论分析,研究了它们在自适应滤波技术中的应用,并进行了模拟仿真试验,对算法的性能进行了分析。

本文的研究工作主要包括以下几个方面: 第一章:前言。

第二章:介绍自适应滤波研究的目的和意义、国内外发展现状、论文主要工作等。 第三章:介绍自适应滤波原理和结构方面的基础知识。

第 4 页(共 40 页)

选题背景

第四章:介绍实现滤波的各种自适应滤波算法,对广泛使用的LMS和RLS算法的性能进行了分析和比较,最后选定最佳方案进行滤波器的设计。

第五章:介绍了MATLAB软件的相关内容,并实现自适应滤波算法在MATLAB上编程和运行。

第六章:对全文工作内容的总结。

3 自适应滤波器

3.1自适应滤波原理

从输入信号中滤出噪声和干扰以提取有用信息的过程称为滤波,相应的装置称为滤波器。如果滤波器的输入和输出均为离散信号,称该滤波器为数字滤波器。当滤波器的输出信号为输入端的线性函数时,该滤波器称为线性滤波器,否则就称为非线性滤波器[9]。一个典型的数字滤波器的框图如图1所示。

X(n) H(n) Y(n) 图1 数字滤波器

设输入信号为x(n),输出信号为y(n)。该数字滤波器可用以下差分方程来表示:

M?1N?1ii y?n??式中ai,bi称为滤波器系数。

?ax?n?i???by?n?i? (2.1)

i?0i?1当bi=0时,式(2.1)变为:

M?1

y?n???i?0ia?x?n? i (2.2)

如果ai=0,bi≠0时,则称为全极点滤波器或递归滤波器。

第 5 页( 共 40 页)

基于MATLAB的自适应滤波算法的研究

由式(2.2),可知数字滤波器的传递函数为:

M?1 H?z???azii?0M?1 (2.3)

?i1??bzii?1其单位冲击响应函数为:

h?n???1z???z?H?

y?n??h??n??x?n??i?????h?ix??n (2.4)

i滤波器是电子设备的一个常用的基本部件,人们对其已进行了广泛的研究。滤波器研究的一个基本问题就是:如何设计和建立最佳或最优的滤波器。所谓最佳滤波器是指能够根据某一最佳准则进行设计的滤波器。20世纪40年代,维纳奠定了关于最佳滤波器研究的基础。假定线性滤波器的输入为有用信号和噪声信号之和,两者均为广义平稳过程且已知它们的二阶统计特性,根据最小均方误差准则,维纳求得了最佳线性滤波器的参数。这种滤波器被称为维纳滤波器。维纳滤波器获得了极其广泛的应用。在维纳研究的基础上,人们还研究了根据最大输出信噪比准则、统计检测准则以及其他最佳准则求得的最佳线性滤波器。但人们发现,在一定条件下,这些最佳滤波器与维纳滤波器是等价的。因而,讨论最优线性滤波器时,一般均以维纳滤波器作为参考。

要实现维纳滤波,就要求:输入信号是广义平稳的;输入信号的统计特征是已知的。根据其他最佳准则的滤波器亦有同样要求然而,由于输入过程取决于外界的信号、干扰环境,这种统计特性常常是未知的、变化的,因而不能满足上述两个要求。由于无法预先知道信号和噪声的特性或者它们是随时间变化的,仅仅用FIR和IIR两种具有固定滤波系数的滤波器无法实现最优滤波。在这种情况下,必须设计自适应滤波器,以跟踪信号和噪声的变化。

滤波器研究的一个基本问题是:如何建立最佳或最优的滤波器。根据最小均方误差准则,20世纪40年代维纳求得了最佳线性滤波器的参数,这种滤波器称为维纳滤波器。然而,只有对信号和噪声的统计特性先验已知的情况下,维纳滤波器才能获得最优滤波。遗憾的是在实际应用中,常常无法得到这些统计特性的先验知识,或者统计特性是随时间变化的。因此用维纳滤波器实现不了最优滤波。在这种情况下,自适

第 6 页(共 40 页)

自适应滤波器

应滤波能够提供卓越的滤波性能。所谓自适应滤波器,就是利用前一时刻己获得的滤波器参数的结果,自动地调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。

所谓的自适应滤波[11],就是利用前一时刻以获得的滤波器参数的结果,自动的调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。自适应滤波器实质上就是一种能调节其自身传输特性以达到最优的维纳滤波器。自适应滤波器不需要关于输入信号的先验知识,计算量小,特别适用于实时处理。

自适应滤波器具有“自我调节”和“跟踪”能力。自适应滤波器可以分为线性自适应滤波器和非线性自适应滤波器。非线性自适应滤波器包括Vofterra滤波器和基于神经网络的自适应滤波器。非线性自适应滤波器具有更强的信号处理能力。但是,由于非线性自适应滤波器的计算较复杂,实际用得最多的仍然是线性自适应滤波器。

3.2自适应滤波器的结构

图2 自适应滤波器的一般结构

自适应滤波器的特性变化是由自适应算法通过调整滤波器系数来实现的。一般而言,自适应滤波器由两部分组成,一是滤波器结构,二是调整滤波器系数的自适应算法。自适应滤波器的结构采用FIR或IIR结构均可,由于IIR滤波器存在稳定性问题,因此一般采用FIR滤波器作为自适应滤波器的结构[15]。如图2示出了自适应滤波器

第 7 页( 共 40 页)

基于MATLAB的自适应滤波算法的研究

的一般结构。

W(n)是自适应滤波器在时刻n的权矢量,用X?n????x?n?x?n?1??x?n?N?1???TT表示n时刻输入信号矢量,W?n????w0?n?w1?n??wN?1?n???表示n时刻N阶自适应滤波器的权系数,d(n)是期望信号,e(n)是误差信号,v(n)是主端输入干扰信号。根据

n自适应滤波算法优化准则J?n???i?1?n?ie?i?2的不同,自适应滤波算法可以分为两类

最基本的算法:最小均方误差(LMS)算法和递推最小二乘(RLS)算法。基于最小均方误差准则,LMS算法使滤波器的输出信号与期望输出信号之间的均方误差

2?E?e??n??最小RLS算法决定自适应滤波器的权系数向量W (n)

使估计误差的加权平方和最小。其中?为遗忘因子,且0???1。由此两准则衍生出许多不同的自适应滤波算法。自适应滤波算法广泛应用于系统辨识、回波消除、自适应谱线增强、自适应信道均衡、语音线性预测、自适应天线阵等诸多领域中。

自适应滤波器的特点是:滤波器的参数可以自动的按照某种准则调整到最佳滤波;实现时,不需要任何关于信号和噪声的先验统计知识,尤其当输入统计特性变化时,自适应滤波器都能调整自身的参数来满足最佳滤波的需要。常常将这种输入统计特性未知,调整自身的参数到最佳的过程称为“学习过程”将输入信号统计特性变化时,调整自身的参数到最佳的过程称为“跟踪过程”,因此自适应滤波器具有学习和跟踪的性能。

实际上自适应滤波器可以用许多不同结构来实现。结构的选取会影响到处理的计算复杂度(即每次迭代的算术操作数目),还会对达到期望性能标准所需的迭代次数产生影响。从根本上讲,主要有两类自适应数字滤波器结构,即有限长冲激响应(FIR,finite- duration impulse response)滤波器和无限长冲激响应(IIR,infinite-duration impulse response)滤波器。FIR滤波器通常利用非递归结构来实现,而IIR滤波器则利用递归结构来实现。

下面将分别介绍两种滤波器,即FTR与IIR滤波器的结构:

1、自适应FIR滤波器结构:应用最广泛的自适应FIR滤波器结构是横向滤波器,也称为抽头延烬线,它利用正规直接形式实现全零点传输函数,而不采用反馈环节。

第 8 页(共 40 页)

方案论述

对于这种结构,输出信号是滤波器系数的线性组合,它产生具有唯一最优解的二次均方误差函数。

2、自适应IIR滤波器结构:自适应IIR滤波器采用的最多的结构是标准直接形式结构,因为它的实现和分析都很简单。然而,采用递归自适应滤波器会存在一些内在的问题,而且收敛速度很慢。为了克服这些问题,一些研究已提出了不同的结构形式。

4 方案论证

4.1 LMS算法

4.1.1算法简介

由Widrow和Hoff提出的最小均方误差(LMS)算法,因为其具有计算量小、易于实现等优点而在实践中被广泛采用。典型的应用领域有系统识别、信号处理和自适应控制。LMS算法的基本原理是基于最速下降法,即沿着权值的梯度估值的负方向进行搜索,达到权值最优,实现均方误差最小意义下的自适应滤波。初始收敛速度、时变系统跟踪能力及稳态失调是衡量自适应滤波算法优劣的三个重要的技术指标。由于主输入端不可避免地存在干扰噪声,自适应滤波算法将产生参数失调噪声。干扰噪声越大,则引起的失调噪声就越大。减小步长因子召可降低自适应滤波算法的稳态失调,提高算法的收敛精度[17]。 4.1.2原理介绍

最小均方(LMS)自适应算法就是一种以期望响应和滤波输出信号之间误差的均方值最小为准的,依据输入信号在迭代过程中估计梯度矢量,并更新权系数以达到最优的自适应迭代算法。LMS算法是一种梯度最速下降方法,其显著的特点是它的简单性。这算法不需要计算相应的相关函数,也不需要进行矩阵运算。由图3给出LMS算法滤波器的基本结构。

第 9 页( 共 40 页)

基于MATLAB的自适应滤波算法的研究

x(k) Z Z . . . -1-1W1 W2 . … . - d(k) - + ∑ . - Z-1 WN向量 控制器 图3 LMS算法滤波器

e(k)

自适应滤波器最普通的应用就是横向结构。滤波器的输出信号y(n)是

N?1

y?n??w?n??x?n???Ti?0iw??n?xn?? i (4.1)

T表示转置矩阵,n是时间指针,N是滤波器次数。这个例子就是有限脉冲响应滤波器的形式,为x(n)和w(n)两个矩阵卷积。

这种自适应算法使用误差信号

e?n??d (4.2) ??n?y??n为了方便起见,将上述式子表示为向量形式,则式(4.1)表示为:

y?n??wT?n??x?n? (4.3) 误差序列可写为

Tw??n?x e?n??d (4.4) ??n?y??n??d?n??? n其中d(n)是期望信号,y(n)是滤波器的输出。使用输入向量x(n)和e(n)来更新自适应滤波器的最小化标准的相关系数。

显然,自适应滤波器控制机理是用误差序列e(n)按照某种准则和算法对其系数{wi(n)},i=1,2,?,N进行调节的,最终使自适应滤波的目标(代价)函数最小化,

第 10 页(共 40 页)

基于MATLAB的自适应滤波算法的研究

?1;k,?m?x? θ?n;k,m??θ?n?n?xm???n

kk,m=0,1,…,M-1 (4.26)

这是一个更新确定性相关函数的递推方程。

相关函数更新公式可以写成矩阵形式:

??n????n?1??x?n??xT??n (4.27) 为了计算方便。令

P?n????1?n? (4.28) 和

K?n??则

P?n??P?n?1??K?n??XT?n??P?n?1? (4.30) 这里M*l矢量K(n)称之为增益矢量。如果将上式两边右乘以延迟线抽头输入信号矢量x(n),得到

K?n??XT?n??P?n?1??x?n??P?n?1??x?n??K?n? (4.31) 简化为

K?n??P?n??x?n? (4.32) 可得到时间递归形式:

?? θ?n;k??θ?n?1;?k??d?nxn?? k (4.33)

P?n?1?x?n?1?xT?n?P?n?1?x?n? (4.29)

d?n??x?n?k?表示确定性互相关函数递归计算方程式中的更新校正项。由式(4.33)

可以得到确定性互相关矢量递归计算公式:

?? θ?n??θ?n?1??d??nxn?? k (4.34)

将P?n????1?n?代入上式(4.34)得到:

1??K??n??d? n (4.35) w?n??P?n??θ?n??得到滤波系数矢量的递归计算公式为

第 16 页(共 40 页)

??方案论述

w?n??w?n?1??K?n?????n (4.36) 式中,??n?是真正的估计误差,

??n??d?nw???x??n?T?n1?? (4.37)

RLS算法的主要优点是收敛速度快,且对自相关矩阵特征值的分散性不敏感,其缺点是计算量比较大。

4.3方案比较分析

4.3.1 LMS算法的收敛性质

自适应滤波系数矢量的初始值w(0)是任意的常数,应用LMS算法调节滤波系数具有随机性而使系数矢量w(n)带来非平稳过程。

通过计算可以得到,要使LMS算法收敛于均值,必须使自适应收敛系数参数u满足下列条件:

0???2

?max (4.28)

这里是?max相关矩阵R的最大特征值。在此条件下,当迭代次数n接近于8时,自适应滤波系数矢量w(n)近似等于最佳维纳解w0。

自适应波波器可以而且实际上广泛应用于非平稳信号处理,而上面的分析都是基于平稳情形作出的。这样做有两个理由。第一个也是最重要的理由是,平稳情况下的分析较为简单而又富实效。从一个自适应滤波器在平稳情形下的收敛性质和失调可以推知其在非平稳条件下工作时的行为。对于在平稳输入下工作的自适应滤波器,维纳权可以看作为参数空间中的一个固定的目标点;自适应算法控制滤波器的权系数,使权向量沿一定的轨道趋近于此目标点。在非平稳条件下工作时,最佳权向量是随着输入信号统计特性的变化而变化的,因此可以将它看作为参数空间中的一个移动的目标点。那时自适应算法控制滤波器的权系数,使权向量跟踪目标点的运动,以便使它们间的距离每时每刻都尽可能地小。显然,在平稳情形下能愈平稳、愈迅速和愈精确地逼近固定目标点的自适应算法,在非平稳条件下也就能愈平稳、愈迅速和愈精确地跟踪移动的目标点。第二个理由是,非平稳情形下自适应过程的分析一般说来相当困难,

第 17 页( 共 40 页)

基于MATLAB的自适应滤波算法的研究

而且也有赖于非平稳输入信号特性变化的类型和性质。 4.3.2 RLS算法的收敛性质

LMS算法的优点是结构简单,鲁棒性强,其缺点是收敛速度很慢。基于最小二乘准则,RLS算法决定自适应滤波器的权系数向量w(n)使估计误差的加权平方和最小。RLS算法对输入信号的自相关矩阵逆进行递推估计更新,收敛速度快,其收敛性能与输入信号的频谱特性无关。

递推式最小均方(RLS)算法的基本思想是力图使在每个时刻对所有已输入信号而言平方误差的加权和最小,这使得RLS算法对非平稳信号的适应性要好。与LMS算法相比,RLS算法采用时间平均,因此,所得出的最优滤波器依赖于用于计算平均值的样本数。

T在性能方面,RLS的收敛与E?xnx???n????的特征值无关,同时RLS的收敛速率

比LMS(NLMS)要快得多,因此,RLS在收敛速率方面有很大优势。然而,鲁棒性或有限精度问题却给RLS算法的有效性带来很大的问题:一方面,横向RLS算法往往不稳定,鲁棒性很差,另一方面,格状RLS算法计算量很大,基本是LMS算法的计算量的平方。以上缺点,使RLS算法并不适合语音通信中的回波抵消。

RLS算法中的步长参数被输入向量的相关矩阵的逆代替,它对抽头输入有白化作用。这一改进对平稳环境下RLS算法的收敛性能有如下深刻影响:

1、RLS算法的收敛速率比LMS算法快一个数量级。

2、RLS速率不随输入向量x(n)的集平均相关矩阵R特征值的扩散度(即条件度)而改变。

3、随着迭代次数n趋于无限,RLS比算法的额外均方误差收敛于零。 影响LMS的收敛因素主要为u与相关矩阵R。RLS为最小均方的延伸,主要根据逆矩阵来完成演算法。RLS有较好的效能,收敛速度很快。且利用通道相关矩阵会随时间而改变,所以更适应时变通道,这种改变会将维参数估计的更准确,相对的矩阵R需要大量使用矩阵运算,它的复杂度很高。

LMS和RLS是自适应滤波两种不同的工作准则,它们对于相同的滤波器结构(横向式或格式)导出不同的滤波算法。一般说来,RLS算法具有较好的收敛性能和跟踪

第 18 页(共 40 页)

过程论述

能力,但是要求较多的计算量(例如,目前最快的RLS算法也要比LMS-SG算法多2-3倍的计算量)。因此,RLS自适应滤波一般用于要求较高的场合。 4.3.3方案选定

RLS算法的主要优点是收敛速度快,且对自相关矩阵特征值的分散性不敏感,其缺点是计算量比较大。

自适应LMS算法简单,它既不需要计算输入信号的相关函数,又不要求矩阵之逆。因而得到了广泛的应用。但是,由于LMS算法采用梯度矢量的瞬时估计,它有大的误差,以致不能获得最优滤波性能。

综上所述本课题将选定LMS算法。

5 过程论述

5.1 MATLAB语言简介

MATLAB是美国MathWorks公司开发的大型数学计算应用软件系统,它提供了强大的矩阵处理和绘图功能,简单易用,可信度高,灵活性好,因而在世界范围内被科学工作者、工程师以及大学生和研究生广泛使用,目前已经成为国际市场上科学研究和工程应用方面的主导软件。掌握MATLAB并借助它解决理论与应用问题已经成为每一个从事科学研究和工程技术人员应该具备的技能[2]。

MATLAB是Matrix Laboratory(矩阵实验室)的缩写,是当前最流行、功能强大的科技应用软件和编程语言之一。MATLAB语言有以下特点:

1、功能强大:数值计算和符号计算,计算和编程可视化,数字和文字的统一处理,离线和在线计算;

2、界面友好,语言简明:以复数矩阵为计算单元,指令表达与数学表达式相近,是一种演算式语言;

3、开放性强:具有70余个功能强大的工具箱,覆盖面极广,可以完成数字图像处理、系统仿真、系统辨识、模糊控制、神经网络建模、信号处理、鲁棒控制、非线性控制、优化理论、统计分析等。

第 19 页( 共 40 页)

基于MATLAB的自适应滤波算法的研究

MATLAB成为应用学科计算机辅助分析、设计、仿真、教学必不可少的基础软件。工具箱函数为各个领域的研究和工程应用提供了有力的手段。

MATLAB系统的基本函数库具有初等函数、初等矩阵和矩阵变换、包括性代数方程组和矩阵特征值问题等数值线性代数、多项式运算和求根、数据析和傅立叶变换以及某些特殊的矩阵函数和数学函数等众多内容。

MATLAB还包括一系列被称作工具箱(TOOLBOX)的专业求解工具。工具箱实际上是MATLAB针对不同学科、不同专业所开发的专用函数库,用来求解各个领域的数值计算问题,包括数据采集工具箱、信号处理工具箱、图像处理工具箱、小波分析工具箱、控制工具箱等。随着MATLAB的不断升级,所含工具箱的功能越来越丰富,规模越来越庞大,因此,应用也越来越广泛,成为各种专业科研人员和工程技术人员的得力工具。

一个图形界面的完成,最终是通过图形界面的各种控件对象的操作来完成,而这些操作必定是通过Matlab 中函数代码的执行来完成的[6]。函数代码的编制可以通过编写回调函数完成,而编写时当所要求执行的指令比较简单时,可以把该控件的代码直接写在“CallBack\属性中;当所要求执行的指令比较长时可以把函数代码放在一个自定义的M 文件中,在“CallBack”中直接将其文件名写上,也可以在主控文件中直接编写,当操作该控件时系统会自动执行“CallBack”中所要求执行的内容。

在本设计中,采用的是在主控文件中直接编写的方法,在GUI 界面单击当前需要编写程序的控件,然后右击将出现一个右键菜单,然后选择Callback 选项,即可直接进入主控M 文件,并且系统会自动生成语句。

目前的MATLAB已经成为国际上最为流行的软件之一,它除了传统的交互式编程之外,还提供了丰富可靠的矩阵运算、图形绘制、数据处理、图形处理,方便的windows编程等便利工具,出现了各种以MATLAB为基础的实用工具箱,广泛地应用于自动控制、图像信号处理、生物医学工程、语言处理、雷达工程、信号分析、振动理论、时序分析于建模、优化设计等领域[12]。

5.2算法实现设计

本课题的主要内容是在MATLAB上实现自适应滤波器的设计。课题的具体内容

第 20 页(共 40 页)

基于MATLAB的自适应滤波算法的研究

axis([0 1200 -2 2]); subplot(3,1,2);

plot(xn);title('xn输入信号'); subplot(3,1,3);

plot(yn);title('yn输出信号'); axis([0 1200 -2 2]); toc

2、归一化LMS算法实现程序 %------------归一化的LMS----------- %u(k)=a/(b+x(k)x(k)') 0 =0

%设输入随机信号v(n),样本间相互独立,用高斯白噪声代替 %设功率为0.02,即E((r(n))^2)=0.02,则v(n)=0.02*randn(1,1024); %设W(0)=[0,0],a=1,b=0

clear; close all;

tic; %计时

M=1024 ; % M 是滤波器阶数,可以改变,直到计算到达到e(n)预期小的值为止,或w(n)达到稳定为止

u=0.05; %控制因子

vn=0.02*randn(1,M);%输入随机信号 t=1:1024;

dn=sin(4*pi*t/100);%标准信号 w1=zeros(1,M); w2=zeros(1,M); a=1;b=0; for n=2:M

xn=sin(4*pi*n/100)+vn;%输入信号 yn(n)=w1(n)*xn(n)+w2(n)*xn(n-1); e(n)=xn(n)-yn(n); u(n)=1/(xn*xn');

w1(n+1)=w1(n)+2*u(n)*e(n)*xn(n); w2(n+1)=w2(n)+2*u(n)*e(n)*xn(n-1); end

figure(1)

% LMS算法的权值随时间n变换的轨迹:W1(n)~n;W2(n)~n subplot(2,1,1); plot(w1,'r'); hold on

plot(w2,'k');title('W1(n)~n(红线),W2(n)~n(黑线)');

第 36 页(共 40 页)

附录

hold off

% 误差e(n)随时间变化的关系曲线:e(n)~n subplot(2,1,2)

plot(e);title('e(n)~n');

figure(2)

subplot(3,1,1);

plot(dn);title('dn标准信号'); axis([0 1200 -2 2]); subplot(3,1,2);

plot(xn);title('xn输入信号'); subplot(3,1,3);

plot(yn);title('yn输出信号'); axis([0 1200 -2 2]); toc

3、功率归一化LMS算法的实现程序 %------------功率归一化LMS算法-----------

%u(k)=a/(gx(k)*gx(k)) gx(k)表示x(k)的方差

%其中gx(k)*gx(k)=l*gx(k-1)*gx(k-1)+e(k)*e(k)可以递推算出,0%设输入随机信号v(n),样本间相互独立,用高斯白噪声代替 %设功率为0.02,即E((r(n))^2)=0.02,则v(n)=0.02*randn(1,1024); %设W(0)=[0,0],a=1/M,l=0.5

clear; close all;

tic; %计时

M=1024 ; % M是滤波器阶数,可以改变,直到计算到达到e(n)预期小的值为止,或w(n)达到稳定为止

u=0.05; %控制因子 a=1/M; l=1;

vn=0.02*randn(1,M);%输入随机信号 t=1:1024;

dn=sin(4*pi*t/100);%标准信号 w1=zeros(1,M); w2=zeros(1,M);

gx2=zeros(1,M);%gx2(k)=gx(k)*gx(k) a=1;b=0; for n=2:M

xn=sin(4*pi*n/100)+vn;%输入信号

第 37 页( 共 40 页)

基于MATLAB的自适应滤波算法的研究

yn(n)=w1(n)*xn(n)+w2(n)*xn(n-1); e(n)=xn(n)-yn(n);

gx2(n)=l*gx2(n-1)+e(n)*e(n); u(n)=a/(gx2(n));

w1(n+1)=w1(n)+2*u(n)*e(n)*xn(n); w2(n+1)=w2(n)+2*u(n)*e(n)*xn(n-1); end

figure(1)

% LMS算法的权值随时间n变换的轨迹:W1(n)~n;W2(n)~n subplot(2,1,1); plot(w1,'r'); hold on

plot(w2,'k');title('W1(n)~n(红线),W2(n)~n(黑线)'); hold off

% 误差e(n)随时间变化的关系曲线:e(n)~n subplot(2,1,2)

plot(e);title('e(n)~n');

figure(2)

subplot(3,1,1);

plot(dn);title('dn标准信号'); axis([0 1200 -2 2]); subplot(3,1,2);

plot(xn);title('xn输入信号'); subplot(3,1,3);

plot(yn);title('yn输出信号'); axis([0 1200 -2 2]); Toc

4、RLS算法的实现程序

所研究的滤波器阶数为200,采样周期等于1ms。 程序清单如下: clear; close all;

tic; %计时 N=1000;%采样点 n=200;%滤波器阶数 Ts=1e-1;%采样周期

b=0.8*randn(1,N);%噪声信号 for i=1:N

xr(1,i)=sin(12*2*pi*i/N);

第 38 页(共 40 页)

附录

x(1,i)=xr(1,i)+b(i); end

%相关系数初始化 Cxx=10000*eye(n); g=zeros(N,n); h=zeros(N,n); e=zeros(1,N); y=zeros(1,N); tr=zeros(1,N); %RLS 算法 for i=n+1:N

g(i,:)=(Cxx*x(i-n+1:i)'./(1+x(i-n+1:i)*Cxx*x(i-n+1:i)'))'; e(1,i)=xr(i)-h(i-1,:)*x(i-n+1:i)'; h(i,:)=h(i-1,:)+e(1,i)*g(i,:);

Cxx=Cxx-g(i,:)'*x(i-n+1:i)*Cxx; y(1,i)=h(i,:)*x(i-n+1:i)'; tr(1,i)=trace(Cxx); end

figure(1);

subplot(3,1,1);

plot(xr);axis([0 1000 -2 2]); title('xr(k) reference singnal'); subplot(3,1,2); plot(x);

title('x(k) input singnal'); subplot(3,1,3); plot(y);

title('y(k) output singnal');

figure(2);

% RLS算法的权值随时间n变换的轨迹: % 误差e(n)随时间变化的关系曲线:e(n)~n subplot(3,1,1); plot(e); title('e(k)'); subplot(3,1,2);

plot(0:N-n,h(n:N,1));hold on; plot(0:N-n,h(n:N,2),'r');hold off;

title('a(n-1) and a(n-2) coeffcients evolution') xlabel('n'); subplot(3,1,3);

第 39 页( 共 40 页)

基于MATLAB的自适应滤波算法的研究

semilogy(0:N-n,tr(n:N)); title('Cxx matrix trace'); xlabel('Samples');

figure(3);

num1=fliplr(h(N,:)); sys1=tf(num1,1,Ts); bode(sys1);hold off; title('Synthesized filter'); xlabel('Frequency in rad/s');

ylabel('Phase in degree;Module in dB'); toc;

第 40 页(共 40 页)

本文来源:https://www.bwwdw.com/article/rbhf.html

Top