毕 业 论 文
题 目 基于LMS自适应滤波器的MATLAB实现
学 院: 电气 系
专 业: 应用电子专业 班 级: 06222班 学 号: 32(号) 学生姓名: 郭永林 指导教师: 赵茂林 起讫日期: 20094.17-2009.6.1
成都电子机械高等专科学校 二○○九 年 六 月 五 日
基于LMS自适应滤波器的MATLAB实现 专业:应用电子 学号:0622232
学生姓名:郭永林 指导教师:赵茂林
摘 要
数字滤波器在数字信号处理中的应用广泛,是数字信号处理的重要基础。自适应滤波器可以不必事先给定信号及噪声的自相关函数,它可以利用前一时刻已获得的滤波器参数自动地调节现时刻的滤波器参数使得滤波器输出和未知的输入之间的均方误差最小化,从而它可以实现最优滤波。
自适应滤波器的算法有很多,有RLS(递归最小二乘法)和LMS(最小均方算法)等。自适应LMS算法是一种很有用且很简单的估计梯度的方法,在信号处理中得到广泛应用。
本论文主要研究了自适应滤波器的基本结构和原理,然后介绍了最小均方误差算法(LMS算法),并完成了一种基于MATLAB平台的自适应LMS自适应滤波器的设计。
通过仿真,我们实现了LMS自适应滤波算法,并从结果得知步长和滤波器的阶数是滤波器中很重要的两个参数,并通过修改它们证实了这一点,其中步长影响着收敛时间,而且阶数的大小也会大大地影响自适应滤波器的性能。 关键字:自适应滤波器 MATLAB LMS 仿真
I
The Realization of Adaptive Filter Based on LMS by
Applying MATLAB
Abstract
Digital filter which is widely used is the important basement of the digital signal processing. Adaptive filter can adjust its coefficients automatically to minimize the mean-square error between its output and that of an unknown input, unnecessary to know the autocorrelation functions of signal and noise in advance, hence it can realize linearly optimum filtering.
Adaptive filter has many different algorithms such as RLS(Recursive Least Square) and LMS(Least Mean-Square) algorithms. Algorithm of adaptive LMS is a simple and very useful method which is used to estimate gradient. It has been widely applied in the signal processing areas.
This paper introduces the structure and the principle of the adaptive filter, and then introduces the LMS algorithm, at the same time, it has completed the design of adaptive LMS filter based on MATLAB platform and realized to decrease noise in signal processing.
Through the simulations, we realize the algorithm of adaptive LMS. Moreover, we can understand there exist two very important parameters, step-size and filter order M through the results. We also demonstrate that how the step-size affects the convergence rate toward the unknown system, and how the filter order M affects the performance of adaptive filter by changing these two parameters. Keywords: Adaptive Filter MATLAB LMS Simulation
II
目 录
摘 要............................................................ I Abstract........................................................... II 目 录.......................................................... III 第一章 绪论......................................................... 1
1.1 滤波器概述 .................................................. 1 1.2数字滤波器................................................... 1 1.3 滤波器发展 .................................................. 1 1.4 小结 ........................................................ 2 第二章 LMS自适应滤波器 ............................................. 3
2.1 自适应滤波器 ................................................ 3 2.2 自适应滤波器设计原理 ........................................ 3 2.3 自适应滤波器的结构及LMS算法 ................................ 4
2.3.1 自适应滤波器结构....................................... 4 2.3.2 LMS算法 ............................................... 5 2.4 小结 ....................................................... 11 第三章 仿真软件 MATLAB 简介........................................ 12
3.1 MATLAB的概况 ........................................... 12 3.1.1 MATLAB产生的历史背景 ................................. 12 3.1.2 MATLAB的语言特点 ..................................... 13 3.2 MATLAB仿真的基本流程....................................... 15 3.3 小结 ....................................................... 16 第四章 LMS自适应滤波器的MATLAB实现............................ 17 4.1 自适应滤波器出现的意义 ..................................... 17 4.2 自适应滤波器的实现 ......................................... 17
4.2.1 最速下降法的仿真...................................... 17 4.2.2 LMS算法的MATLAB仿真 ................................. 18
4.2.2.1 基于LMS算法的自适应滤波器设计 .................. 18
4. 2.2. 2 LMS算法中正交性原理分析 ....................... 19
4.2.2.3 LMS算法的MATLAB仿真结果 ...................... 20
4.2.2.4 对LMS算法参数的分析研究 ........................ 20
4.3 小结........................................................... 24 第五章.结论以及展望............................................... 25
III
参考文献........................................................... 26 附录(程序) ………………………………………………………………………… 27 致 谢........................................................... 28
IV
第一章 绪论
1.1滤波器概述
对特定频率的频点或该频点以外的频率进行有效滤除的电路,就是滤波器。其功能就是得到一个特定频率或消除一个特定频率。
1.2数字滤波器
滤波器有模拟滤波器和数字滤波器,在离散系统中广泛应用数字滤波器,它的作用是利用离散时间系统的特性对输入信号波形或频率进行加工处理。或者说,把输入信号变成一定的输出信号,从而达到改变信号频谱的目的。
1.3 滤波器发展
滤波器可分为线性滤波器和非线性滤波器两种。若滤波器输出端滤波,平滑或预测的量是它的输入观测量的线性函数,则认为该滤波器是线性的;否则,认为该滤波器是非线性的。
在解线性滤波问题的统计方法中,通常假设已知有用信号及其附加噪声的某些统计参数,而且需要设计含噪数据作为其输入的线性滤波器,使得根据某种统计准则噪声对滤波器的影响最小。实现该滤波器优化问题的一个有用方法是使误差信号的均方值最小化。维纳滤波器在均方误差意义上是最优的。误差信号均方值相对于线性滤波器可调参数的曲线通常称为误差性能曲面。该曲面的极小点即为维纳解。
维纳滤波器不适合于分析非平稳性的信号和/或噪声。当出现的信号和/或噪声是非平稳的时候,必须假设最优滤波器为时变形式。一种十分成功的解决方案是采用卡尔曼滤波器。在各种工程应用中该滤波器是一个强有力的系统。维纳滤波器和卡尔曼滤波器的线性滤波器理论已经在连续时间信号和离散时间信号文献中获得广泛的研究。然而,由于数字计算机的广泛普及和数字信号处理器件与日俱增的应用等技术原因,离散时间线性滤波器通常更为人们所乐意使用。
维纳滤波器的设计要求所处理数据统计方面的先验知识。只有当输入数据的统计特性与滤波器设计所依赖的某一先验知识匹配时,该滤波器才是最优的。当这个信息完全未知时,就不可能设计维纳滤波器,或者该设计不再是最优的。在这种情况下,可采用的一个直接方法是“估计和插入”过程。该过程包含两个步骤,首先是“估计”有关信号的统计参数,然后将所得到的结果“插入”非递归公式以计算滤波器参数。对于实时运算,该过程的缺点是要求特别的精心制作,
1
而且要求价格昂贵的硬件。为了消除这个限制,可采用自适应滤波器。因为自适应滤波器依靠递归算法进行运算,采用这样一种系统,意味着滤波器是自设计的。递归算法将从某些预先确定的初始条件集出发,这些初始条件代表了人们所知道的上述环境的任何一种情况。在非平稳环境下,只要这种变化是足够缓慢的,由于它能够跟踪输入数据统计特性随时间的变化,因此,该递归算法提供了一种跟踪能力。
最早的自适应滤波器可以追溯到二十世纪五十年代末期,在这个时期大量的研究者独立工作在这种滤波器的不同应用领域。依赖于这类早期工作,出现了最小均方(LMS)算法,它成为运行横向滤波器的一种简单且有效的算法。LMS算法是Widrow和Hoff在1959年研究自适应线性元素的模式识别方案时发明的,这些自适应线性元素在文献中通常称为Adaline。LMS算法是一种随机梯度算法,它在相对于抽头权值的误差信号平方幅度的梯度方向上迭代调整每个抽头权值。
自适应信号处理的应用有很多,包括自适应均衡,语音编码,谱分析,自适应噪声消除,自适应波束成形等等2。
自适应滤波器可提供一种十分吸引人的解决方法,而且其性能远优于用常规方法设计的固定滤波器。此外,自适应滤波器还能提供非自适应方法所不可能提供的信号处理能力。因此,自适应滤波器在当前和未来都会成功地应用于诸如通信,控制,雷达,声纳,地震和生物医学工程等诸多领域。 1.4 小结
本章简要地总结了滤波器的类型和概念等等,并介绍了线性最优滤波器和自适应滤波器的发展以及应用。
2
第二章 LMS自适应滤波器
2.1 自适应滤波器
60年代,美国B.Windrow和Hoff首先提出了主要应用于随机信号处理的自适应滤波器算法,从而奠定了自适应滤波器的发展。所谓自适应滤波器,即利用前一时刻已获得的滤波器参数等结果,自动地调节现时刻的滤波器参数,以适应信号与噪声未知的或随时间变化的统计特性,从而实现最优滤波。
自适应信号处理主要是研究结构可变或可调整的系统,它可以通过自身与外界环境的接触来改善自身对信号处理的性能。通常这类系统是时变的非线性系统,可以自动适应信号传输的环境和要求,无须详细知道信号的结构和实际知识,无须精确设计处理系统本身。自适应系统的非线性特性主要是由系统对不同的信号环境实现自身参数的调整来确定的。自适应系统的时变特性主要是由其自适应响应或自适应学习过程来确定的,当自适应过程结束和系统不再进行时,有一类自适应系统可成为线性系统,并称为线性自适应系统,因为这类系统便于设计且易于数学处理,所以实际应用广泛。本文研究的自适应滤波器就是这类滤波器。自适应信号处理的应用领域包括通信、雷达、声纳、地震学、导航系统、生物医学和工业控制等。自适应滤波器是相对固定滤波器而言的,固定滤波器属于经典滤波器,它滤波的频率是固定的,自适应滤波器滤波的频率则是自动适应输入信号而变化的,所以其适用范围更广。在没有任何关于信号和噪声的先验知识的条件下,自适应滤波器利用前一时刻已获得的滤波器参数来自动调节现时刻的滤波器参数,以适应信号和噪声未知或随机变化的统计特性,从而实现最优滤波。
自适应滤波器出现以后,发展很快。由于设计简单、性能最佳,自适应滤波器是目前数字滤波器领域是活跃的分支,也是数字滤波器研究的热点。主要自适应滤波器有:递推最小二乘(RLS)滤波器、最小均方差(LMS)滤波器、格型滤波器、无限冲激响应(IIR)滤波器。
实际情况中,由于信号和噪声的统计特性常常未知或无法获知,这就为自适应滤波器提供广阔的应用空间、系统辨识、噪声对消、自适应谱线增强、通信信道的自适应均衡、线性预测、自适应天线阵列等是自适应滤波器的主要应用领域。
2.2 自适应滤波器设计原理
自适应滤波器是以最小均方误差为准则,由自适应算法通过调整滤波器系数,以达到最优滤波的时变最佳滤波器。设计自适应滤波器时,可以不必预先知道信号与噪声的自相关函数,在滤波过程中,即使噪声与信号的自相关函数随时
3
间缓慢变化,滤波器也能自动适应,自动调节到满足均方误差最小的要求。自适应滤波器主要由参数可调的数字滤波器和调整滤波器系数的自适应算法两部分构成自适应滤波器的一般结构如图1所示。
图1中d(k)为期望响应,x(k)为自适应滤波器的输入,y(k)为自适应滤波器的输出,e(k)为估计误差,e(k)=d(k)-y(k),前置级完成跟踪信号的选择,确定是信号还是噪声;后置级根据前置级的不同选择对数字滤波器输出作不同的处理,以得到信号输出。自适应滤波器的滤波器系数受误差信号e(k)控制,e(k)通过某种自适应算法对滤波器参数进行调整,最终使e(k)的均方值最小。因此,实际上,自适应滤波器是一种能够自动调整本身参数的特殊维纳滤波器,在设计时不需要事先知道关于输入信号和噪声的统计特性的知识,它能够在自己的工作过程中逐渐“了解”或估计出所需的统计特性,并以此为依据自动调整自己的参数,以达到最佳滤波效果。一旦输入信号的统计特性发生变化,它又能够跟踪这种变化,自动调整参数,使滤波器性能重新达到最佳。
dkxk 参数可调数字滤波器 自适应滤波器算法 + ∑ eke- yk 图1 自适应滤波器的基本结构
2.3自适应滤波器的结构及LMS算法 2.3.1 自适应滤波器结构
自适应滤波器的结构有FIR和IIR两种。FIR滤波器是一种非递归系统,即当前输出样本仅是过去和现在输入样本的函数,其冲击响应是一个有限长序列,并且仅在原点处有极点;IIR滤波器是递归系统,即当前输出样本是过去输出和过去输入样本的函数,并且其冲击响应具有无限的持续时间。因为FIR滤波器除原点外,只有零点没有极点,因此其具有很好的线性相位,即这种滤波器不会给信号带来相位失真,而IIR的相位响应是非线性的;另外,由于FIR滤波器是非递归的,稳定性比较好,而IIR滤波器的稳定性不能得到保证,并且实现起来也
4
比较复杂;由于IIR滤波器存在稳定性的问题,并且实现起来也比较复杂。因此本设计采用FIR滤波器。自适应FIR滤波器结构又可分为3种结构类型:横向型结构、对称横向型结构以及格形结构,由于FIR滤波器横向结构的算法具有容易实现、计算量少等优点,在对线性相位要求不严格、收敛速度不是很快的场合,多采用FIR作为自适应滤波器横向结构。故本设计采用这种FIR横向滤波器结构作为自适应滤波器的结构,如图2示
Xk Z-1 Z-1 Z-1 X(k-M+1) Wo(k) W1(k) + + + + 自适应算法 W2(k) + + y(k) ∑ WM-1(k) + 图2 FIR横向滤波器结构图
设其中XkXk,Xk1,,XkM1,为自适应滤波器的输入矢量;WkW0k,W1k,,WM1k是权系数矢量,即自适应滤波器的冲激
T响应;y(k)为自适应滤波器的输出矢量。T为矩阵转置符,k为时间序列,M为滤波器的阶数。自适应滤波器除包括一个按照某种结构设计的滤波器外,还有一套自适应的算法。自适算法是根据某种判断来设计滤波器的。该算法包括最小均方算法(LMS)、最小高阶均方算法(LMF)、最小平方算法(OLS)、递推最小算法(RLS)等等。本文主要介绍LMS(Least Mean Squares,最小均方)自适应算法的原理。
2.3.2 LMS算法 (1)LMS算法描述
LMS算法的性能准则是采用瞬时平方误差性能函数k代替均方误差性能
2函数Ek,其实XT (k) 质是以当前输出误差、当前参考信号和当前权系数求
2得下个时刻的权系数。其输出信号yk、输出误差k及权系数Wk的计算公
5
式为: yk=WkXTk ek=dkyk
Wk1Wk2kXk dkxknk
式中Xk表示第k时刻参考信号矢量,XkXk,Xk1,,XkM1, k为迭代次数,M为滤波器的阶数。e(k)dk表示第k时刻的输入信号矢量,y(k)、分别表示第k时刻的输出信号与输出误差,Wk表示k时刻权系数矢量,
W(k)[Wk,0,Wk,1Wk,M1]。表示LMS算法步长收敛因子。自适应滤波器收敛的条件是0maxx。其中,max是输入信号的自相关矩阵R的最大特征值。的选取必须在收敛速度和失调之间取得较好的折中,既要具有较快的收敛速度,又要使稳态误差最小。它控制了算法稳定性和自适应速度,如果很小,算法的自适应速度会很慢;如果很大,算法会变得不稳定。由于LMS算法结构简单、计算量小、稳定性好,因此被广泛应用于系统辨识、信号增强、自适应波束形成、噪声消除以及控制领域等。 (2)基本LMS算法
构成自适应数字滤波器的基本部件是自适应线性组合器,如图 8-1 的所示。设线性组合 器的M个输入为xk1,xkM,其输出yk是这些输入加权后的线性组合,即ykWiki。
i1M k1 x xk2 . xkM . ; W1 yk W2 + _ WM + + k 图3 自适应线性组合器
6
定义权向量WW1,W2,W3WM,且
TXkXk1,,XkMTT
T在图(1)中,令d(k)代表“所期望的响应”,并定义误差信号
kdkykdkWixkii1M
写成向量形式:
kdkWTXkdkXTkW
误差平方为:
2kd2k2dkXTkWWTXkXTkW 上式两边取数学期望后,得均方差:
E2kEd2k2EdkXTkWWTEXkXTkW(2.1)
定义互相关函数行向量RTxd:
RTxd=EdkXTk
和自相关函数矩阵
RxxEXkXTk 则均方误差(2.1)式可表述为:
E2kEd2k2RTxdWWTRxxW (2.2)
这表明,均方误差是权系数向量W的二次函数,它是一个中间向上凹的抛物形曲面,是具有唯一最小值的函数。调节权系数使均方误差最小,相当于沿抛物形曲面下降找到最小值。可以用梯度来求该最小值。将式(2.2)对权系数W求导数,得到均方误差函数的梯度
kE2k2E2k/W1,,E2k/WM 2Rxd2RxxW
7
令k0,即可求出最佳仅系数向量:
WoptR1xxRxd (2.3)
将Wopt代入式(2.3)得最小均方误差:
E2kEd2kRTxdWopt
利用(2.3)式求最佳权系数向量的精确解需要知道Rxx和Rxd的先验统计知识,而且还需要进行矩阵求逆等运算。Windrow and Hoff提出了一种在这些先验统计知识未知时求Wopt的近似的方法,习惯上称为Windrow and Hoff LMS算法。这种算法的根据是最优化方法中的最速下降法。根据最速下降法,“下一时刻”权系数向量Wk1应该等于“现时刻”权系数向Wk加上一个负均方误差梯度-(k)的比例项,即
Wk1Wkk
式中,是一个控制收敛速度与稳定性的常数,称之为收敛因子。
不难看出,LMS算法有两个关键:梯度的计算以及收敛因子的选择。精确计算梯度是十分困难的,一种粗略的但是却十分有效的计算梯度的近似方法是:直接取ε²(k)作为均方误差E{ε²(k)}的估计值,即:
k2k2kk (2.4)
^式中的k为
k=d2kWTkXk=Xk (2.5)
将式(2.5)代入式(2.4)中,得到梯度估值
k2kXk
^于是,Widrow-Hoff LMS算法最终为
Wk1Wk2kXk (2.6)
可以证明,梯度估值是无偏的,因此,梯度估值k是无偏估计。
^的选择:对权系数向量更新公式(2.6)两边取数学期望,得
8
EWk1EWk2EkXkEWk2EXkdkXTWk
I2RxxEWk2Rxd式中,I为单位矩阵,RxxEXkXTXTk和RxdEXkdk。 当k=0时,
EW1I2RxxEW02Rxd
对于k=1,利用上式结果,则有
EW2I2RxxEW12RxdI2RxxEW02I2RxxRxd2ii01
起始时,
EW0W0
故
EW2I2RxxW02I2RxxRxd
2i01iEWk1I2RxxW02I2RxxRxd
k1ii0k由于Rxx是实值的对称阵,可以写出特征值分解式:
RxxQQTQQ1 这里我们利用了正定阵Q的性质Q1QT,且diag1,,M是对角阵,其对角元素是Rxx的特征值。将式(18)代入式(17)后得:
EWk1I2QQ1k1W2I2QQ1Rxd (2.7)
i注意到以下恒等式以及关系式:
9
I2QQQQ2QQQI2Q (2.8) QI2QQI2QQI2Q1i11i1i1i1i1
limI2QQQ21ii0QI2Qi011Q (2.9)
1假定所有的对角元素的值均小于1,则
limI2k0k10
将式(2.8)-(2.9)代入式(2.7),结果有
EWk1QQ1RxdR1xxRxdWopt由此可见,当迭代次数无限增加时,权系数向量的数学期望可收敛至维纳解,其条件是对角阵的所有对角元素均小于1,即
12max1 或 01max
其中max是Rxx的最大特征值。称为收敛因子,它决定达到维纳解的速率。 基本LMS自适应算法如下: 初始化:
W00; R0I; 选择:
:01max for k1 to n final do:
WkWk12xkWTk1XkXk
10
LMS自适应滤波器如图所示。
X(k) Z-1 Z-1 Z-1 X(k-M+1) Wo(k) W1(k) + + + + LMS自适应算法 W2(k) + + y(k) ∑ WM-1(k) + 图3 LMS自适应滤波器
2.4 小结
本章从自适应滤波器出发,介绍了自适应滤波器的结构与设计原理,重点描述了LMS算法和该算法推导过程,最后给出了设计一个LMS自适应滤波器的基本步骤。
11
第三章 仿真软件 MATLAB 简介
3.1 MATLAB的概况
MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言做相同的事情简捷得多。
当前流行的MATLAB 7.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox)工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。
开放性使MATLAB广受用户欢迎。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。
3.1.1 MATLAB产生的历史背景
在70年代中期,Cleve Moler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库。EISPACK是特征值求解的FOETRAN程序库,LINPACK是解线性方程的程序库。在当时,这两个程序库代表矩阵运算的最高水平。
到70年代后期,身为美国New Mexico大学计算机系系主任的Cleve Moler,在给学生讲授线性代数课程教学生使用EISPACK和LINPACK程序库时,他发现学生用FORTRAN编写接口程序很费时间,于是他开始利用业余时间自己动手为学生编写EISPACK和LINPACK的接口程序。Cleve Moler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室(laboratory)两个英文单词的前三个字母的组合.在以后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传。
1983年春天,Cleve Moler到Stanford大学讲学,MATLAB深深地吸引了工程师John Little。John Little敏锐地觉察到MATLAB在工程领域的广阔前景。同年,他和Cleve Moler,Steve Bangert一起用C语言开发了第二代专业版。这一
12
代的MATLAB语言同时具备了数值计算和数据图示化的功能。
1984年,Cleve Moler和John Little成立了Math Works公司,正式把MATLAB推向市场并继续进行MATLAB的研究和开发。
在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类。一类是数值计算型软件,如MATLAB,Xmath,Gauss等这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,Mathematical,Maple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低。MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算,文字处理,可视化建模和实时控制能力,开发了适合多学科,多部门要求的新一代科技应用软件MATLAB。经过多年的国际竞争,MATLAB已经占据了数值软件市场的主导地位。
在MATLAB进入市场前,国际上的许多软件包都是直接以FORTRANC语言等编程语言开发的。这种软件的缺点是使用面窄,接口简陋,程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。MATLAB的出现,为各国科学家开发学科软件提供了新的基础。在MATLAB问世不久的80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在MATLAB上重建。
到今天,经过MathWorks公司的不断完善,MATLAB已经发展成为适合多学科,多种工作平台的功能强大的大型软件。在国外,MATLAB已经经受了多年考验。在欧美等高校,MATLAB已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生,硕士生,博士生必须掌握的基本技能。在设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决各种具体问题。在国内,特别是工程界,MATLAB一定会盛行起来。可以说,不管从事工程方面的哪个学科,都能在MATLAB里找到合适的功能。
3.1.2 MATLAB的语言特点
一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB最突出的特点就是简洁。MATLAB用更直观的,符合人们思维习惯的代码,代替了C和 FORTRAN语言的冗长代码。MATLAB给用户带来的是最直
13
观,最简洁的程序开发环境。以下简单介绍一下MATLAB的主要特点。
1. 语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用MATLAB进行科技开发是站在专家的肩膀上。
我们知道,如果用FORTRAN或C语言去编写程序,尤其当涉及矩阵运算和画图时,编程会很麻烦。例如,如果用户想求解一个线性代数方程,就得编写一个程序块读入数据,然后再使用一种求解线性方程的算法(例如追赶法)编写一个程序块来求解方程,最后再输出计算结果。在求解过程中,最麻烦的要算第二部分。解线性方程的麻烦在于要对矩阵的元素作循环,选择稳定的算法以及代码的调试动不容易。即使有部分源代码,用户也会感到麻烦,且不能保证运算的稳定性。解线性方程的程序用FORTRAN和C这样的高级语言编写,至少需要四百多行,调试这种几百行的计算程序可以说很困难。以下用MATLAB编写以上两个小程序的具体过程。
MATLAB求解下列方程,并求解矩阵A的特征值。 Ax=b, 其中:
A= 32 13 45 67 23 79 85 12 43 23 54 65 98 34 71 35 b= 1 2 3 4
解为:x=A\\b;设A的特征值组成的向量e,e=eig(A)。
可见,MATLAB的程序极其简短。更为难能可贵的是,MATLAB甚至具有一定的智能水平,比如上面的解方程,MATLAB会根据矩阵的特性选择方程的求解方法,所以用户根本不用怀疑MATLAB的准确性。
2. 运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。
3. MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。
4. 程序限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需
14
对矩阵预定义就可使用。
5. 程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。
6. MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。
7. MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
8. 功能强大的工具箱是MATLAB的另一特色。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。功能性工具箱用于多种学科。而学科性工具箱是专业性比较强的,如control toolbox, signal processing toolbox, communication toolbox等。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高,精,尖的研究。
9. 源程序的开放性。开放性也许是MATLAB最受人们欢迎的特点。除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。
3.2 MATLAB仿真的基本流程
使用MATLAB软件进行仿真的基本操作流程如下图所示,用户首先要进行问题定义, 考虑自己要仿真什么东西,大概的算法应该怎样,然后按照算法编写程序,生成.m文件后运行,如果结果是我们的预期,那么整个仿真过程即可顺利结束,否则,应该分析问题所在,并重新考虑问题定义、源码修改的必要性。
15
开始 问题定义 编写程序 分析问题所在 执行仿真 结果满意? 结束 分析结果
满意
图3.2 MATLAB仿真流程图
3.3 小结
本章对MATLAB仿真软件进行了简单了介绍,包括该软件的发展,语言特点等等,并给出了MATLAB仿真的一般流程图。
16
第四章 LMS自适应滤波器的MATLAB实现
4.1 自适应滤波器出现的意义
自适应滤波器与普通的滤波器不同,它的冲激响应或滤波参数是随外部环境的变化而改变的,经过一段自动调节的收敛时间达到最佳滤波的要求。最早的自适应滤波器可以追溯到二十世纪五十年代末期,,在这个时期大量的研究者独立工作在这种滤波器的不同应用领域。依赖于这类早期工作,出现了最小均方(LMS)算法,它成为运行横向滤波器的一种简单而有效的算法。LMS算法是Widrow和Hoff在1959年研究自适应线性元素的模式识别方案时发明的。LMS算法是一种随机梯度算法,它在相对于抽头权值的误差信号平方幅度的梯度方向上迭代调整每个抽头权值。
自适应滤波器是统计信号处理的一个重要组成部分。凡是需要处理未知统计环境下运算结果所产生的信号或需要处理非平稳信号时,自适应滤波器可提供一种十分吸引人的解决方法,而且其性能远优于用常规方法设计的固定滤波器。此外,自适应滤波器还能提供非自适应方法所不可能提供的信号处理能力。因此,自适应滤波器成功地应用于诸如通信,控制,雷达,声纳,地震和生物医学工程等诸多领域。
4.2 自适应滤波器的实现 4.2.1 最速下降法的仿真
在第二章中推导了最速下降法的原理,因为均方误差函数是滤波系数的二次方程,由此形成了一个多维的超抛物曲面,这好象一个碗状曲面又具有惟一的碗底的最小点,通常称之为自适应滤器的误差性能曲面。当滤波器工作在平稳随机过程的环境下,这个误差性能曲面就具有固定边缘的恒定形状。自适应滤波器的起始值是任意值,位于误差性能曲面上的某一点,经过自适应调节过程,使对应于滤波系数变化的点移动,朝碗底最小点方向移动,最终到达碗底最小点,实现了最佳维纳滤波。最速下降法是实现上述最佳搜索的一种优化技术,它利用梯度信息分析自适应滤波性能和追踪最佳滤波状态。根据最速下降法,“下一时刻”权系数向量Wk1应该等于“现时刻”权系数向Wk加上一个负均方误差梯度
k的比例项,即
Wk1Wkk
式中,是一个控制收敛速度与稳定性的常数,称之为收敛因子1。
17
仿真的结果如下:
图4.1 最速下降法的仿真
从图中我们可以看出,一开始的时候误差较大,随着时间的增长,误差逐渐减小,最后达到所允许的误差范围内。
4.2.2 LMS算法的MATLAB仿真
4.2.2.1基于 LMS算法的自适应滤波器设计
LMS算法最核心的思想是用平方误差代替均方误差,其基本算法为
Wk,n1Wk,n2enXnk,
其中,Wk,n和Wk,n1分别为迭代前后的系数值;n和n1为前后两个时;k0,1,M1,M为滤波器的阶数;为收敛因子;
ekdkykdkXTkWkdkWTkXk为误差信号,Xnk为
18
输入信号;ykXTkWk为输出信号[8]。
在自适应滤波器的实际操作中,一个必须注意的问题是自适应步长的选择。由LMS迭代算法可知,欲使其收敛,则自适应步长的取值范围为0max。 通过实际的仿真可得出:
通过程序设定滤波器的理想输入信号和噪声输入信号,叠加信号通过LMS自适应滤波器滤波后,随时间的增长,预测信号与实际信号之间的误差将会越来越小,也即达到了根据外部变化,通过LMS算法控制滤波参数,来追踪实际信号的效果。 4.2.2.2 LMS算法中正交性原理分析
在最速下降法中我们介绍到,在输入信号和参考响应都是随即信号的情况下,自适应线性组合器的均方性能曲面是权矢量W(n)的二次函数,由于自相关矩阵为正交矩阵,及成一向上凹的抛物面,即是二次均方函数有唯一的最小植。 然儿在实际的LMS算法中我们确没有用到自相关距阵序列,而是依据输入信号在跌代过程中估计梯度矢量,并更新权系数以达到最佳的自适应算法,然而在LMS算法中我们如何来实现这一最佳权系数的确定呢,由此引入正交原理。
我们研究的自适应滤波的目的是使系统能够自我调节最终使输出信号逼近于期望信号,也就是使期望响应与输出响应的差值最小,理想误差为0 ,即:
e(n)=d(n)-y(n)
我们任意假设某一时刻的期望响应d(n)与输出响应x(n向量的大小和方向 然而由数学的勾股定理我们不难得出,要使e(n)最小,那么必须使得e(n)与y(n)正交。
在自适应滤波过程中,滤波器的输出响应y(n)随权系数W的调整,使输出响应y(n)在二位空间里逐渐逼近于期望响应d(n),当输出响应逼近于期望响应时即当期望响应相似于输出响应时,在几何图解中即d(n)是在P方向上的投影,y(n)为在P方向上的向量,此时e(n)与y(n)正交。
此时均方误差最小,又由y(n)=x(n)tw(n)知道,y(n)为w(n)与x(n)的积,因此时的输入响应x(n)为已知且唯一的,那么此刻就存在且只有一个权系数W,即为滤波器的最佳权系数。
又因为y(n)与x(n)向量的方向相同,那么得到的y(n)与x(n)正交,由正交性质:两两想正交则内积为零。所以2e(n)X(n)等于0。推出w(n+1)=w(n),既自适应滤波器输出响应与期望响应逼近后,滤波器的权系数将不再改变,理想状态下即误差为零,最佳权系数也就确定。
19
4.2.2.3 LMS算法的MATLAB程序仿真 (1)程序见附录 (2)程序仿真结果如图:
图 4.2
由图的仿真结果看出上述的LMS自适应滤波程序能够实现期望的收敛状态。
4.2.2.4 对LMS算法参数的分析研究
传统的LMS算法具有计算量小,结构简单,易于实现等优点,尤其是这种算法是最先由统计分析法导出的一种实用算法,它是一类自适应滤滤波器的基础。在本小节中用MATLAB软件对LMS的算法中的一些参数做认真的研究,并总结出其对算法的影响。
(1)步长。步长是表征迭代快慢的物理量。由LMS算法可知,步长越大,自适应时间越短,自适应过程越快,但它引起的失调也越大,当大于1/max时,
20
系统发散;步长越小,系统越稳定,失调越小,但是自适应过程也相应加长。因此,步长的选择要从整个系统的要求出发,在满足精度要求的前提下,尽量减少自适应时间。
可以通过对一程序中步长值大小的改动来观察步长大小对于自适应滤波器性能产生的影响:
1:随着步长增大时:
图4.3
由图4.3知,当步长很大是,LMS算法将不能完成收敛。
2:当步长过小时,
21
图4.4
比较图4.2知滤波器的预测误差会很大,需要经过很长的时间,才会达到所要求的状态,这是不够理想的,由此也证明了步长越小,收敛时间越长。 (2)滤波器的阶数N。对于不同的滤波器阶数可得到不同的滤波效果: 1:当阶数过小时N=10如图有:
22
图4.5
N减小时会产生较大的预测误差,这对滤波器的性能将是一个很大的影
响。
2:当阶数过大N=200时,如图:,
23
图4.6
产生的影响将是可能导致LMS算法的收敛,从而也就达不到所要求的状态,无法准确的跟踪输入信号。
4.3 小结
本章在介绍了自适应滤波器出现的意义后,用MATLAB软件对最速下降法和LMS算法进行了仿真,通过修改滤波波器的一些参数来观察这些参数对于自适应滤波器性能的影响。
24
第五章 结论以及展望
滤波器在电子设备中已经得到了很广泛的应用,而自适应滤波器可以不必事先给定信号及噪声的自相关函数,可以利用前一时刻已经获得的滤波器参数自动地调节当前时刻的滤波参数,从而实现最优滤波。自适应滤波器一直是学术界的重要研究课题。近年来,伴随微电子技术和超大规模集成电路技术的飞速发展又促进了自适应滤波技术的进步。自适应滤波技术由于对干扰频率不敏感,而且其权值调整是基于对系统的优化,所以越来越多的被人们所关注。
本文首先对滤波器的概念和类型做了一些基本的论述,随后提出了线性最优滤波器,并简单介绍了维纳滤波器与卡尔曼滤波器,然后针对自适应滤波器做了重点的描述,包括自适应滤波器的基本结构和原理等等。
其次,本文对最速下降法和LMS自适应算法原理做了详细的论述,并给出了推导,为了更好的研究LMS自适应滤波器的性能,我们选择MATLAB仿真软件进行仿真,并在之后对将要用到的MATLAB仿真平台进行了简略的介绍。
最后,通过编写程序,我们实现了基于MATLAB仿真平台的LMS自适应滤波器,并通过一个去噪的实例来观察其性能。通过对结果的分析,并通过修改自适应滤波器的步长和阶数,我们可以看到这两个参数能够在很大程度上影响滤波器的性能。仿真实验最后可以得出,步长过小会使收敛时间过慢,而步长过大又可能将导致LMS算法无法收敛,同样,阶数也必须满足一定的条件,否则,滤波器同样将无法达到要求。
25
参考文献
[1] 何振亚. 自适应信号处理,科学出版社
[2] 姚天任,孙洪. 现代数字信号处理,华中科技大学出版社 [3] 丁玉美,高西全. 数字信号处理,西安电子科技大学出版社
[4] 邱天爽,魏东兴,唐洪. 通信中的自适应信号处理,电子工业出版社 [5] 陈尚勤,李小峰. 快速自适应信息处理,人民邮电出版社
[6] 贺宽,黄涛. 基于MATLAB的自适应滤波器设计,武汉理工大学学报 [7] 张圣勤 MATLAB7.0实用教程,机械工业出版社
26
附录
1.LMS自适应滤波器的程序如下:
clear all clear all close all
length=1000*8;%设置信号长度 N=100;%设置权的数量 a=zeros(1,length+N); for i=0:0.05:0.2 if i==0
a=0.5*cos(2*pi*i*(0:length+N-1)); else
a=a+cos(2*pi*i*(0:length+N-1));%产生输入信号 end end a=a';
d=zeros(1,length+N); for i=0:0.05:0.2 if i==0
d=d+.5*cos(2*pi*i*(0:length+N-1)); else
d=d+cos(2*pi*i*(0:length+N-1));%产生期望信号 end end d=d';
w=zeros(N,1); E=zeros(1,length); u=0.0001; for i=1:length
E(i)=d(i)-a(i:i+N-1)'*w;
w=w+2*u*E(i)*a(i:i+N-1);%LMS算法
27
end
figure:plot((1:length),E),title('误差');% 误差的变化情况
28
致谢
随着本论文的完成,我的大学3年学习和生活即将结束了,回顾这三年来的一切,我非常感谢带过我的所有老师们,是他们在这三年当中在学习上给了我巨大的帮助和指导,在生活中给予我许多的关怀。毕业在即,我要特别感谢我的指导老师赵老师,感谢他在毕业设计和毕业论文的过程中给我了很大的帮助与指导,令我受益匪浅。同时,各位老师认真的工作作风,严谨的治学态度与孜孜不倦的科研精神深深的触动了我,这些将激励我在以后无论是生活中,学习中,还是工作中都要踏踏实实,积极上进,成为我受用一生的宝贵财富。
同时,我也要感谢所有参加我毕业论文答辩的老师们,以及所以帮助过我的老师和同学。
29
因篇幅问题不能全部显示,请点此查看更多更全内容