自适应噪声抵消LMS算法Matlab仿真
MATLAB仿真实现LMS和RLS算法

MATLAB 仿真实现LMS 和RLS 算法题目:序列x(n)有AR (2)模型产生:)()2()1()(21n w n x a n x a n x +-+-=,w(n)是均值为0、方差为1的高斯白噪声序列。
.7.0,4.121-==a a 用LMS 算法和RLS 算法来估计模型参数21,a a 。
按照课本第三章63页的要求,仿真实现LMS 算法和RLS 算法,比较两种算法的权值收敛速度,并对比不同u 值对LMS 算法以及λ值对RLS 算法的影响。
解答:1 数据模型(1)高斯白噪声用用randn 函数产生均值为0、方差为1的标准正态分布随机矩阵来实现。
随后的产生的信号用题目中的AR (2)模型产生,激励源是之前产生的高斯白噪声。
(2)信号点数这里取为2000,用2000个信号来估计滤波器系数。
(3)分别取3个不同的u 、λ值来分析对不同算法对收敛效果的影响。
其中u=[0.001,0.003,0.006],lam=[1,0.98,0.94]。
2 算法模型2.1自适应算法的基本原理自适应算法的基本信号关系如下图所示:图 1 自适应滤波器框图输入信号x(n)通过参数可调的数字滤波器后产生输出信号y(n),将其与参考信号d(n)进行比较,形成误差信号e(n)。
e(n)通过某种自适应算法对滤波器参数进行调整,最终是e(n)的均方值最小。
当误差信号e(n)的均方误差达到最小的时候,可以证明信号y(n)是信号d(n)的最佳估计。
2.2 LMS 算法简介LMS 算法采用平方误差最小的原则代替最小均方误差最小的原则,信号基本关系如下:1()()()()()()(1)()2()()(0,1,2,....1)N i i i y n w n x n i e n d n y n w n w n e n x n i i N μ-=-=-+=+-=-∑ 写成矩阵型式为:()()()()()()(1)()2()()T y n W n X n e n d n y n W n W n e n X n μ==-+=+ 式中,W(n) 为n 时刻自适应滤波器的权矢量,011()[(),(),....()]TN W n w n w n w n -=,N 为自适应滤波器的阶数;X( n) 为n 时刻自适应滤波器的参考输入矢量,由最近N 个信号采样值构成,()[(),(1),....(1)]TX n x n x n x n N =--+;d ( n) 是期望的输出值;e ( n) 为自适应滤波器的输出误差调节信号(简称失调信号) ;μ是控制自适应速度与稳定性的增益常数,又叫收敛因子或步长因子。
在Matlab中进行噪声抑制和降噪处理的方法

在Matlab中进行噪声抑制和降噪处理的方法引言:噪声是信号处理中的一个常见问题,它可以由多种因素引起,如传感器本身的噪声、电磁干扰等。
噪声的存在会影响到信号的质量和准确性,因此在许多应用中,我们需要进行噪声抑制和降噪处理。
对于Matlab来说,它提供了多种方法和工具来实现这一目标。
本文将介绍在Matlab中进行噪声抑制和降噪处理的方法。
一、频域滤波方法在Matlab中,频域滤波方法是一种常见且有效的噪声抑制和降噪处理方法。
该方法的基本思想是将信号从时域转换到频域,在频域中对信号进行滤波,并将滤波后的信号再转换回时域。
Matlab提供了丰富的频域滤波函数和工具,如fft、ifft、fftshift等。
通过这些函数,我们可以实现低通滤波、高通滤波、带通滤波等各种滤波操作,从而有效抑制和降噪信号。
二、时域滤波方法时域滤波方法是另一种常用的噪声抑制和降噪处理方法。
该方法的基本思想是在时域中对信号进行滤波,直接对信号进行抽样和滤波处理。
与频域滤波不同的是,时域滤波方法更加直观和易于理解。
在Matlab中,我们可以使用filter函数和fir1函数实现时域滤波。
其中,filter函数可以对信号进行FIR滤波,而fir1函数可以设计并生成FIR滤波器。
三、小波变换方法小波变换是一种非常有用的信号处理方法,它可以将信号在时间和频率上进行局部分析。
在噪声抑制和降噪处理中,小波变换可以帮助我们将信号分解成不同的频率成分,并对噪声进行抑制。
在Matlab中,我们可以使用wavelet函数和wdenoise函数来实现小波变换。
通过这些函数,我们可以选择不同的小波基函数,并设置适当的阈值来实现噪声抑制和降噪处理。
四、自适应滤波方法自适应滤波是一种根据信号特性自动调整滤波器参数的滤波方法。
它可以自动识别和适应信号中的噪声,并对其进行抑制和降噪处理。
在Matlab中,自适应滤波可以通过nlms函数和rls函数来实现。
这些函数基于LMS算法和RLS算法,可以快速、准确地对信号进行自适应滤波。
基于LMS算法自适应噪声抵消系统的仿真研究概要

基于LMS算法自适应噪声抵消系统的仿真研究概要摘要:随着科技的进步和应用的广泛,我们日常生活中经常会遇到各种噪声干扰,对于一些噪声严重的环境,我们需要使用噪声抵消技术来提高信号质量。
本文主要研究了一种基于LMS算法的自适应噪声抵消系统,并通过仿真方法对其进行了评估和验证。
关键词:LMS算法,自适应,噪声抵消,信号质量1.引言噪声是一种对信号质量产生负面影响的因素,噪声抵消技术可以有效地降低噪声干扰,提高信号的质量。
LMS算法是一种常用的自适应滤波算法,它通过不断调整滤波器系数来最小化误差信号和输入信号之间的平方差,从而实现噪声抵消的目的。
本文基于LMS算法,设计了一个自适应噪声抵消系统,并使用MATLAB进行仿真评估。
2.系统模型我们考虑一个包含输入信号、噪声信号和输出信号的噪声抵消系统。
输入信号经过噪声干扰后得到输出信号,我们需要通过自适应滤波器来估计噪声信号,然后将其从输出信号中剔除。
系统模型可以表示如下:y(n)=s(n)+d(n)其中,y(n)为输出信号,s(n)为输入信号,d(n)为噪声信号。
3.LMS算法原理LMS算法可以通过不断更新自适应滤波器的系数来最小化估计误差。
算法的迭代过程如下:-初始化自适应滤波器的系数为0。
-通过滤波器对输入信号进行滤波,得到滤波后的输出信号。
-根据输出信号和期望信号之间的误差来更新滤波器系数。
-重复上述步骤,直到收敛。
4.仿真实验我们使用MATLAB软件来进行仿真实验。
首先,我们生成一个包含噪声干扰的输入信号,并设定期望信号为输入信号本身。
然后,根据LMS算法的迭代过程,不断更新自适应滤波器的系数。
最后,比较输出信号和期望信号之间的误差,评估噪声抵消系统的性能。
5.仿真结果分析通过比较输出信号和期望信号的误差,我们可以评估系统的性能。
通过调整LMS算法的参数,如步长和滤波器长度等,我们可以进一步优化系统的性能。
在本文的仿真实验中,我们发现当步长设置为0.01,滤波器长度为100时,系统的性能最佳。
基于LMS和RLS算法的自适应滤波器仿真

基于LMS和RLS算法的自适应滤波器仿真自适应滤波器是一种可以自动调整其权重参数来适应不断变化的信号环境的滤波器。
常用的自适应滤波算法包括最小均方(LMS)和最小二乘(RLS)算法。
本文将对基于LMS和RLS算法的自适应滤波器进行仿真,并分析其性能和特点。
首先,介绍LMS算法。
LMS算法是一种基于梯度下降的自适应滤波算法。
其权重更新规则为:w(n+1)=w(n)+μ*e(n)*x(n),其中w(n)为当前时刻的权重,μ为步长(学习速率),e(n)为当前时刻的误差,x(n)为输入信号。
通过不断迭代和更新权重,LMS算法可以使滤波器的输出误差逐渐减小,从而逼近期望的输出。
接下来,进行LMS自适应滤波器的仿真实验。
考虑一个声纳系统的自适应滤波器,输入信号x(n)为声波信号,输出信号y(n)为接收到的声纳信号,期望输出信号d(n)为理想的声纳信号。
根据LMS算法,可以通过以下步骤进行仿真实验:1.初始化权重w(n)为零向量;2.读取输入信号x(n)和期望输出信号d(n);3.计算当前时刻的滤波器输出y(n)=w^T(n)*x(n),其中^T表示矩阵的转置;4.计算当前时刻的误差e(n)=d(n)-y(n);5.更新权重w(n+1)=w(n)+μ*e(n)*x(n);6.重复步骤2-5,直到滤波器的输出误差满足预设条件或达到最大迭代次数。
然后,介绍RLS算法。
RLS算法是一种递推最小二乘的自适应滤波算法。
其基本思想是通过不断迭代更新滤波器的权重,使得滤波器的输出误差的二范数最小化。
RLS算法具有较好的收敛性和稳定性。
接下来,进行RLS自适应滤波器的仿真实验。
基于声纳系统的例子,RLS算法的步骤如下:1.初始化滤波器权重w(n)为一个较小的正数矩阵,初始化误差协方差矩阵P(n)为一个较大的正数矩阵;2.读取输入信号x(n)和期望输出信号d(n);3.计算增益矩阵K(n)=P(n-1)*x(n)/(λ+x^T(n)*P(n-1)*x(n)),其中λ为一个正则化参数;4.计算当前时刻的滤波器输出y(n)=w^T(n)*x(n);5.计算当前时刻的误差e(n)=d(n)-y(n);6.更新滤波器权重w(n+1)=w(n)+K(n)*e(n);7.更新误差协方差矩阵P(n)=(1/λ)*(P(n-1)-K(n)*x^T(n)*P(n-1));8.重复步骤2-7,直到滤波器的输出误差满足预设条件或达到最大迭代次数。
基于LMS的自适应干扰抵消算法的matlab实现

1自 适应 干扰抵 消算法 在通信系统 中,经常会遇到强 干扰 信号背 景下有用信 号的检测 问题 ,因此干扰抵 消是通 信 系统 的一 个很重要 的组成部分 。 自 应干扰 适 抵 消系统 , 包含有未知干扰 的原 始信 号作为 将 自 适应滤波器 的参 考信号 ,而同一干扰源 发出
法的迭代公式 如下 : e } i)Xn W( (- (- (T n n n  ̄ ) ) W( 1 w0 _u X( n ) 】 2 += n ) xI ln ( 一 ( L IF ( = ( 『 1 x) 1 ) 一 x — + ) 表示时 刻 n n J 的输入 信号矢量 ; Wn = 0 ) ㈤…WL 1 1 T [ (, w n w1 一 ( 表示 时刻 n的 自适 n 1 的干扰信号 为滤波器的输入 。通过 自 应滤波 应滤波器的权 系数 ; 中: 适 式 L为滤 波器的阶数 , d 器的权系数调整, 使得滤波器输出趋于干扰信 (为期 望输 出值 ,n n ) e】 (为误差 ,是 步长 因子 , U 为 号 。这样 , 通过相减器 , 考信号 中的干扰抵 控制稳定性和 收敛速度 的参 量。该 LMS 将参 算法 消掉 。如图 1 所示。 结构简单 、 计算量小且稳定性好. ( 频域块 L S 2 1 M 算法 块 L 算法 的基本 原理是 将输 人数 据序 MS 列 u ) 串, ( 通过 并变换将 其分成 长 为 L的块 , n 并 将 这样 的数据 数据块 逐块 的送 到阶 数为 M 的 自 适应 滤波器 。 在收集 到每个数 据块后 , 进行 自 适应 滤波抽头权值的更新 ,使滤波器 的 自适应 图 1为 典 型 自适 应 干 扰 抵 消 系统 的 原 理 框 图 过程逐块 的进行。其核心在于计算滤波器 抽头 图 1 原始 输入信 号 d 中, (是有 用信号 s ) r ( n 系数 和输 入信 号的线性卷积 ,以及输入 信号和 与噪声 干扰 v 1 (之和, 输入 信号是 与 v ) n 参考 (相 误 差信号 的线 性相关 。以 F T的 1 重叠保 留 n F 关 的噪声 un假设 s1(及(是零均值 的平稳 (, ) (' ) u nv n ) 法 的频域形式来实现 : 将输入信 号和期 望信号 随机过程且 满 足 与 v ) u ) (及 ( 互不相关, n n 由图 分成 N点 的数 据块 , 然后做 N点离散傅 里叶变 1 可见 , 整个 自 适应 干扰抵 消系统 的输 出为: 换, 权系数每 N个样点更新 一次 , 并且每次更新 e s )v1 , ) ( ( +O卜v( ( ) n n n 1 都是 由 N个误 差信 号样点 累加结果来控制 的。 对( 两边取平方 : 1 试 信普 域游辩 e ㈤ =2 ) v ) ,) 2( In v (对式 ( 2 s( 斗 (一 ( 】 8 ) (_ 侧 2 n { n v n2+ nv ) ) 2 ) 两边取数学期 望, 由于 s ) v (与 ㈤及 u n ㈤不相关 , s f与 vn n ,1 ) (也不相关, : 故 E2 【 【 ( 【 v n e s n - v ,) 2 )E o ( J 2 ( 3 )
自适应滤波器MATLAB仿真

自适应滤波器MATLAB仿真摘要:本文介绍了自适应滤波器的工作原理,以及推导了著名的LMS(Least mean squares)算法。
以一个例子演示了自适应滤波器的滤波效果。
实验结果表明,该滤波器滤波效果较好。
关键词:自适应滤波器 MATLAB7.0 LMS算法Simulate of adaptive filter based on MATLAB7.0Abstract:This article described the working principle of adaptive filter and deduced the well-known LMS algorithm. Take an example to demonstrate the adaptive filters filtering effects. The results show that the filter has an effective way to filter single.Key words:LMS algorithm Adaptive Filter Matlab7.01 引言由Widrow B等提出的自适应滤波理论,是在维纳滤波、卡尔曼滤波等线性滤波基础上发展起来的一种最佳滤波方法。
由于它具有更强的适应性和更优的滤波性能,从而广泛应用于通信、系统辨识、回波消除、自适应谱线增强、自适应信道均衡、语音线性预测和自适应天线阵等诸多领域[1]。
自适应滤波器最大的优点在于不需要知道信号和噪声的统计特性的先验知识就可以实现信号的最佳滤波处理。
本文通过一个具体例子和结果论证了自适应滤波器的滤波效果。
2 自适应滤波原理及LMS算法2.1 自适应滤波原理自适应滤波原理图[2],如图1所示。
图1自适应滤波原理图在自适应滤波器中,参数可调的数字滤波器一般为FIR数字滤波器,IIR数字滤波器或格型数字滤波器。
自适应滤波分2个过程。
第一,输入信号想x(n)通过参数可调的数字滤波器后得输出信号y(n),y(n)与参考信号d(n)进行比较得误差信号e(n);第二,通过一种自适应算法和x(n)和e(n)的值来调节参数可调的数字滤波器的参数,即加权系数,使之达到最佳滤波效果。
基于自适应语音增强的算法研究与MATLAB仿真

本科毕业设计论文题目增强算法研究及Matlab实现专业名称电子信息科学与技术学生姓名朱盛领指导教师张瑞毕业时间2014-07毕业设计一、题目基于自适应语音信号增强算法研究与Matlab仿真二、指导思想和目的要求本论文主要阐述了基于自适应滤波器实现语音增强的基本原理,研究了最小二乘法(LMS算法),完成了基于LMS算法的自适应滤波器对语音增强的设计,在设计过程中,对信号的降噪处理进行了分析讨论。
利用Matlab仿真软件实现了LMS自适应滤波算法,并从仿真结果得知步长因子是自适应滤波器中很重要的参数,以及滤波器的阶数和采样数等,都对自适应滤波器降噪以及收敛性能有影响。
三、主要技术指标自适应步长μ的值: 从公式max01μλ<<可以看出,收敛性能对收敛参数μ的选取很敏感,不同的μ值使收敛的速度不同,“μ值太小, 迭代次数太多,收敛速度变慢;μ值太大收敛性能曲线又不稳定”。
所以选取合适的μ值对收敛性能至关重要。
四、进度和要求05周-06周:广泛查阅资料,确定论文的总体设计方案。
07周-10周:学习自适应语音信号增强的基本原理并进行研究,掌握LMS 算法,谱减法的知识,学习Matlab仿真软件,DSP相关知识。
11周-12周:对研究的内容进行详细分析,制定阶段性目标并进行设计。
13周-14周:撰写论文的全部正文部分,并修缮论文的结果与分析、结束语、参考文献、致谢及毕业设计小结等。
15周:整理文档资料,装订论文,准备论文答辩。
五、主要参考书及参考资料[1]Sambur M.Adaptive noise cancelling for speech signalS.IEEE Transactions onAcoustics,Speech and Signal Processing,1978,26(5):419—43[2]B Widrow,S D Stearns千永德、龙宪惠译,自适应信号处理,成都四川大学出版社,1989.[3]T w Parsons,文成义、常国岑、王化周等译,语音处理,北京国防工业出版社,1990.[4]姚天任,数字语音处理,武汉华中科技大学出版社,1992.[5]邹国良,自适应滤波理论及应用[M],河北大学出版社,1997.[6]胡广传,数字信号处理理论、算法与实现,北京清华大学出版社,1997.[7]葛良、陶智,基于自适应滤波的语音增强算法.江苏:苏州大学学报,2002.[8]何振亚,自适应信号处理[M],北京科学出版社,2002.[9]何振亚.等,自适应信号处理,科学出版社,2002.4.[10]袁俊泉,MATLAB信号处理.清华大学出版社,2002.5.[11]赵力,语音信号处理,北京机械工业出版社,2003.[12]丁玉美、高西全.,数字信号处理,西安电子科技大学出版社,2003.[13]Simon Haykin,自适应滤波器原理,电子工业出版社,2003.7.[14]韩利竹,王华.MA TLAB电子仿真与应用.北京国防工业出版社,2003.[15]龚耀寰,自适应滤波器-时域自适应滤波和智能天线,电子工业出版社,2003.7. 学生___________ 指导教师___________ 系主任___________目录摘要 (II)ABSTRACT .................................................................................................................................... I II 前言 .. (V)第一章绪论 (1)1.1语音增强的应用背景 (1)1.2语音增强的研究历史 (2)1.3本课题的研究内容 (2)第二章语音增强的基础知识 (3)2.1语音和人耳的感知特性 (3)2.2噪声特性 (4)第三章语音增强算法研究及MATLAB实现 (9)3.1MATLAB仿真软件介绍 (9)3.2基于LMS的自适应算法及MATLAB仿真 (11)3.3经典语音增强减谱算法及MATLAB实现 (22)3.4改进形式的语音增强减谱算法及MATLAB仿真 (25)3.5基于噪声残差的语音增强减谱算法及MATLAB仿真 (28)3.6小结与进一步改进思想 (31)第四章基于DSP的语音增强算法系统的实现 (33)4.1DSP概述 (33)4.2CCS(C ODE C OMPOSER S TUDIO)DSP集成开发环境 (34)4.3语音增强算法在CCS环境下的实现 (35)4.4语音增强算法在硬件平台上的实现 (36)4.5系统的软件设计 (37)第五章结论和展望 (38)5.1总结 (38)5.2展望 (40)致谢 (43)参考文献 (44)摘要语音总会受到外界噪声不同程度的干扰和影响,噪声不但降低了语音质量和可懂度,而且还将导致语音处理系统性能的急剧恶化。
语音降噪--LMS算法

语音降噪–LMS算法语音降噪是指通过技术手段将语音信号中的噪声成分去除,提高语音信号的清晰度和准确性的一种方法。
LMS(最小均方算法)是一种常见的语音降噪算法,下文将介绍该算法的原理和实现方式。
算法原理LMS算法基于自适应线性滤波理论,通过估计噪声信号与语音信号在某个时刻的相关性来进行降噪处理。
该算法的基本流程如下:1.获取含有噪声的语音信号:通常采用麦克风捕捉环境语音信号,或从音频文件中读取。
2.前置处理:对原始语音信号进行增益处理、预加重等前置处理,便于后续滤波处理。
3.滤波处理:将语音信号输入自适应滤波器中,通过不断调整滤波器的权值,使得滤波器的输出尽可能的接近于原始语音信号,并最小化滤波器输出和实际语音信号的均方误差。
4.降噪处理:将滤波器的输出减去噪声信号的预测。
算法实现LMS算法的实现可以用MATLAB编程完成,以下是其中的关键步骤:1.读取音频数据:可以用MATLAB的audioread函数直接读取本地音频文件,或使用麦克风捕捉环境语音信号。
2.进行前置处理:可以使用MATLAB的filter函数进行卷积滤波,或手动计算并应用增益、预加重等处理。
3.自适应滤波器的初始化:通常使用MATLAB的zeros函数初始化自适应滤波器的权重向量。
4.滤波处理:在MATLAB中可以使用filter函数实现自适应滤波器的滤波过程,并使用LMS算法对滤波器的权重进行调整。
5.噪声预测:通过估计语音信号和噪声信号的相关性得到噪声估计值,从而实现降噪处理。
LMS算法是一种常用的语音降噪算法,其本质是自适应滤波,通过在线调整滤波器的权重来最小化其输出与实际语音信号的均方误差,从而实现降噪处理。
对于语音处理领域的从业者来说,掌握LMS算法的原理和实现方法是必不可少的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自适应噪声抵消LMS 算法Matlab 仿真传统的宽带信号中抑制正弦干扰的方法是采用陷波器(notch filter),为此我们需要精确知道干扰正弦的频率.然而当干扰正弦频率是缓慢变化时,且选频率特性要求十分尖锐时,则最好采用自适应噪声抵消的方法.下图是用一个二阶FIR 的LMS 自适应滤波器消除正弦干扰的一个方案。
1) 借助MATLAB 画出误差性能曲面和误差性能曲面的等值曲线; 2) 写出最陡下降法, LMS 算法的计算公式(δ=0.4);3) 用MATLAB 产生方差为0.05,均值为0白噪音S(n),并画出其中一次实现的波形据2)中的公式,并利用3)中产生的S(n),在1)中的误差性能曲面的等值曲n 的值曲线上叠加画出LMS 法时100情况确定,一般选取足够大以使算法达到基)(n y 宽带信号+正弦干扰0()()()y n S n N n =+图;4) 根线上叠加画出采用最陡下降法, LMS 法时H(n)的在叠代过程中的轨迹曲线。
5)用MATLAB 计算并画出LMS 法时 随时间变化曲线(对 应S(n)的某一次的一次实现)和e(n)波形;某一次实现的结果并不能从统计的角度反映实验的结果的正确性,为得到具有统计特性的实验结果,可用足够多次的实验结果的平均值作为实验的结果。
用MATLAB 计算并画出LMS 法时J(n)的100次实验结果的平均值随时间n 的变化曲线。
6)用MATLAB 计算并在1)中的误差性能曲面的等次实验中的H(n)的平均值的轨迹曲线;(在实验中n=1,,…..N,N 的取值根据实验本收敛)01(),(0)0.052()sin(16102()sin()16ss S n r N n n N n n πππ==+是均匀分布的白噪音不相关和)(),()(10n N n N n S)(n x x 1()())(n e n N n =1、用Matlab画误差性能曲面和误差性能曲面的等值曲线的程序如下:[h0,h1] = meshgrid(-2:0.1:4 , -4:0.1:2);J=0.55+h0.*h0+h1.*h1+2*cos(pi/8)*h1.*h0-sqrt(2)*h0*cos(pi/10)-sqrt(2)*h1*cos(9*pi/40);echo on;v=0:0.1:2;%axis([-4 4 -4 4 0 100]);figure(1);%误差曲面surf(h0,h1,J);xlabel('h0');ylabel('h1');title('误差性能曲面');figure(2);contour(h0,h1,J,v); %等值曲线xlabel('h0');ylabel('h1');title('误差性能曲面等值曲线');运行结果如下图示:2、①最陡下降法计算公式:)(n 21)()1(H G V n H n δ−=+ 其中δ取0.4,H(0)=[3 -4],T ⎟⎠⎞⎜⎝⎛+=⎟⎠⎞⎜⎝⎛−⎥⎦⎤⎢⎣⎡⎟⎠⎞⎜⎝⎛+==⎟⎠⎞⎜⎝⎛−⎟⎠⎞⎜⎝⎛=⎥⎦⎤⎢⎣⎡−⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=−=∑∑==1016k 2cos 2116)(2sin 210162sin 2161)(r 16k2cos 16)(2sin 2162sin 2161)(r )1()0(2)()()0()1()1()0(22)(2)(V 15015010G ππππππππi yx i xx yx yx xx xx xx xx yxxx k i i k k i i k r r n h n h r r r r r n H R n 而故⎥⎦⎤⎢⎣⎡−−=⎥⎦⎤⎢⎣⎡−⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=5320.37362.2)0(5377.06725.02)()(19239.09239.012)(10G G V n h n h n V②LMS 算法计算公式:,...2,1,0),1()1()()1()1()()1()1(e =+++=++−+=+n n X n e n H n H n X n H n y n T δ其中δ取0.4。
3、 用MATLAB 产生方差为0.05,均值为0白噪音s(n) 程序如下: n=1:1024;s(n)=sqrt(0.05)*randn(1,length(n)); plot(s);axis([0 1024 -1 1]); title('白噪声s(n)');其一次实现图形如下:4、 最陡下降法和LMS 算法程序: clear all;N=1000;%信号点数 k=2;%滤波器阶数q=0.4;%步长s=sqrt(0.05)*randn(1,N);%原始信号n=1:N;y=s(n)+sin(2*pi*n/16+pi/10);%叠加噪声后的期望输出信号x=sqrt(2)*sin(2*pi*n/16);%相关噪声输入figure(1);subplot(3,1,1);plot(n,s);title('原始宽带信号S(n)');subplot(3,1,2);plot(n,y);title('叠加噪声后输出信号y(n)');subplot(3,1,3);plot(n,x);title('相关噪声输入信号x(n)');%设置初值并进行两种算法的迭代hn=zeros(2,N);%存放最陡下降法下H(n)迭代数据hn(:,1)=[3 -4]';vg=[-2.7362 -3.5320]';Rxx=[[1 0.9239]',[0.9239 1]'];Ryx=[0.6725 0.5377]';echo off;for i=1:N-1%最陡下降法,第n=i-1次迭代vg=2*Rxx*hn(:,i)-2*Ryx;hn(:,i+1)=hn(:,i)-1/2*q*vg;end;hm=zeros(2,N);%存放LMS算法下H(n)迭代数据h=[3 -4]';hm(:,1)=h;for i=2:N%XN=x(i+1:i)';u=x(i:-1:i-1);en=y(i)-u*h;h=h+q*en*u';hm(:,i)=h;end;%绘制图像[h0,h1] = meshgrid(-2:.1:4 , -4:.1:2);J = 0.55+h0.*h0+h1.*h1+2*cos(pi/8)*h1.*h0-sqrt(2)*h0*cos(pi/10)-sqrt(2)*h1*cos(9*pi/4 0);v=0:0.1:2;%等值曲线取值figure(2);%surf(h0,h1,J); %误差曲面contour(h0,h1,J,v); %等值曲线xlabel('h0');ylabel('h1');hold on;plot(hn(1,:),hn(2,:),'g');plot(hm(1,:),hm(2,:),'r');title('最陡下降法, LMS法时H(n)的在叠代过程中的轨迹曲线');legend('等值曲线','最陡下降法轨迹','LMS算法1次轨迹','NorthEastOutside'); 图形如下:5、单次实现及统计平均(100次试验)下J(n)及e(n)特性程序如下:clear all;g=100;%统计平均次数N=400;k=2;%滤波器阶数q=0.4;enn=zeros(1,N-k+1);%存放单次实现下的J(n)=e(n)^2en0=zeros(1,N-k+1);%存放单次实现下的e(n)ejn=zeros(1,N-k+1,g);%存放100次实现下的J(n)=e(n)^2%g次统计试验for j=1:gs=sqrt(0.05)*randn(1,N);%原始信号n=1:N;y=s(n)+sin(2*pi*n/16+pi/10);%叠加噪声后的期望输出信号 x=sqrt(2)*sin(2*pi*n/16);%相关噪声输入%设置初值,并进行一次LMS算法迭代h=[3 -4]';for i=k:Nu=x(i:-1:i-1);en=y(i)-u*h;h=h+q*en*u';en0(i-k+1)=en;%保存单次e(n),由于进行g次试验,仅保存最后一次enn(i-k+1)=en^2;%保存单次J(n),由于进行g次试验,仅保存最后一次 ejn(:,i-k+1,j)=en^2;%保存g次试验的J(n)end;end;%g次试验结束%计算g次试验J(n)的统计平均值for i=1:N-k+1jn(i)=sum(ejn(1,i,:))/g;end;figure(1);subplot(2,1,1);plot(enn);%单次实现下Jntitle('LMS算法单次实现下J(n)');subplot(2,1,2);plot(en0,'r');title('LMS算法单次实现下e(n)');figure(2);plot(jn);%统计平均下J(n)title('LMS算法100次实现下平均J(n)');单次实现下J(n)和e(n)如下图所示:100次统计平均下的J(n)如下图所示:6、LMS算法下100次实验H(n)曲线程序如下:clear all;g=100;%统计试验次数N=1000;%信号点数k=2;%滤波器阶数q=0.4;hh=zeros(2,N,g);%存放g次迭代下LMS算法的H(n)for j=1:g%g次统计试验s=sqrt(0.05)*randn(1,N);%原始信号n=1:N;y=s(n)+sin(2*pi*n/16+pi/10);%叠加噪声后的期望输出信号x=sqrt(2)*sin(2*pi*n/16);%相关噪声输入%设置初值hn=zeros(2,N);%存放最陡下降法下H(n)迭代数据,仅保存最后一次试验 hn(:,1)=[3 -4]';vg=[-2.7362 -3.5320]';Rxx=[[1 0.9239]',[0.9239 1]'];Ryx=[0.6725 0.5377]';echo off;for i=1:N-1%最陡下降法,第n=i-1次迭代vg=2*Rxx*hn(:,i)-2*Ryx;hn(:,i+1)=hn(:,i)-1/2*q*vg;end;%LMS算法一次试验hm=zeros(2,N);%存放LMS算法下H(n)迭代数据h=[3 -4]';hm(:,1)=[3 -4]';for i=k:N%迭代N-k+1次u=x(i:-1:i-1);en=y(i)-u*h;h=h+q*en*u';hm(:,i)=h;hh(:,i,j)=h;%保存g次试验下H(n)end;end;for i=1:N-k+1%统计平均hhh(1,i+1)=sum(hh(1,i+1,:))/g;hhh(2,i+1)=sum(hh(2,i+1,:))/g;end;hhh(:,1)=[3 -4]';[h0,h1] = meshgrid(-2:.1:4 , -4:.1:2);J = 0.55+h0.*h0+h1.*h1+2*cos(pi/8)*h1.*h0-sqrt(2)*h0*cos(pi/10)-sqrt(2)*h1*cos(9*pi/4 0);v=0:0.1:2;figure(1);contour(h0,h1,J,v); %等值曲线xlabel('h0');ylabel('h1');hold on;plot(hn(1,:),hn(2,:));%最陡下降法轨迹曲线plot(hhh(1,:),hhh(2,:),'r');%LMS法时H(n)100次统计平均轨迹曲线title('最陡下降法及 LMS法时H(n)100次统计平均轨迹曲线');legend('等值曲线','最陡下降法轨迹','LMS算法100次平均轨迹','NorthEastOutside');图形如下:。