MATLAB的自适应滤波器设计

MATLAB的⾃适应滤波器设计
基于MATLAB的⾃适应滤波器设计
第⼀章绪论
1.1 引⾔
滤波器根据其逼近函数的形式不同, 可设计出多种滤波器. 常⽤的有巴特沃思滤波器、切⽐雪夫é 型滤波器、切⽐雪夫ê 型滤波器、椭圆滤波器、巴塞尔滤波器。对于这些滤波器的设计, 都是先给定其副频特性的模平⽅?H ( j X) ? 2, 再求出系统函数H (s)。
设计滤波器时, 需由经典式求出滤波器的系统函数H (s) , 求出极点S k (k= 1, 2, ??2N ) , 给定N , X c,E, 即可求得2N 个极点分布。然后利⽤归⼀化函数, 得出归⼀化的电路组件值, 即可得到满⾜要求的滤波器。此种设计中, 需要进⾏烦琐、冗长的数字计算, 这对于电路设计者来说, 不仅费时费⼒, 准确性不易把握, ⽽且不符合当今⾼速发展的时代要求。
⾃适应滤波器是近30 年来发展起来的关于信号处理⽅法和技术的滤波器,爆炸和火灾危险环境电力装置设计规范
其设计⽅法对滤波器的性能影响很⼤。⾃适应滤波器能够得到⽐较好的滤波性能,当输⼊信号的统计特
性未知,或者输⼊信号的统计特性变化时,⾃适应滤波器能够⾃动地迭代调节⾃⾝的滤波器参数,以满⾜某种准则的要求,从⽽实现最优滤波。⾃适应滤波器⼀般包括滤波器结构和⾃适应算法两个部分,这两部分不同的变化与结合,可以导出许多种不同形式的⾃适应滤波器。
1.2 MATLAB简介
Matlab是由美国MathWorks公司推出的软件产品。它是⼀完整的并可扩展的计算机环境, 是⼀种进⾏科学和⼯程计算的交互式程序语⾔。它的基本数据单元是不需要指定维数的矩阵, 它可直接⽤于表达数学的算式和技术概念, ⽽普通的⾼级语⾔只能对⼀个个具体的数据单元进⾏操作。在Matlab内部还配备了涉及到⾃动控制、信号处理、计算机仿真等种类繁多的⼯具箱, 所以Matlab 的应⽤⾮常⼴泛, 它可涉⾜于数值分析、控制、信号分析、通信等多种领域。
1.3 ⾃适应滤波器的应⽤
适应滤波器在信号检测、信号恢复、数字通信等许躲领域中被⼴泛应⽤,因⽽⼀直是学术界⼀个重要研究课题。近年来,微电⼦技术和超⼤规模集成(VLSI)电路技术的飞速发展⼜促进了⾃适应滤波技术的进步。⾃适应滤波技术正是由于具有对⼲扰频率不敏感且其权值调整是基于对系统参数的优化等特点,⽽越来越多地受到⼈们的关注。
传统的⾃适应滤波器主要在时域中实现,采⽤抽头延迟线(Tapped Delay Line)结构及Widrow-Hoff⾃适应LMS算法。这种⽅法算法简单,稳健性也⽐较好,因⽽被⼴泛的应⽤。但是滤波器的阶数可能会很⾼,步长系数可能会很⼩,收敛性能不理想,对输⼊信号的⾃相关矩阵有很强的依赖性,因⽽不具有⾼⾃适应率。当输⼊信号的⾃相关矩阵的特征值分布发散度很⼤时,算法的收敛速度很慢,跟踪性能不好。
第⼆章⾃适应滤波原理
2.1 ⾃适应滤波器
所谓⾃适应滤波,就是利⽤前⼀时刻已获得的滤波器参数等结果,⾃动地调节现时刻的滤波器参数,已适应信号和噪声未知的或随时间变化的统计特性,从⽽实现最优滤波。
⾃适应滤波器由参数可调的数字滤波器(或称为⾃适应处理器)和⾃适应算法两部分组成,如图1所⽰:
图1 ⾃适应滤波器
输⼊信号x(n)通过参数可调的数字滤波器后产⽣输出信号( 或响应)y(n),将其与参数信号(或称期望信号)d(n)进⾏⽐较,形成误差信号e(n)。e(n)(有时还要利⽤x(n)),通过某种⾃适应算法对滤波器进⾏参数调整,最终使e(n)的均⽅误差最⼩。因此,⾃适应滤波器实际上是⼀种能够⾃动调整本⾝参数的特殊维纳滤波器,在设计时不需要事先知道关于输⼊信号和噪声的统计特性知识,它能够在⾃⼰⼯作过程中逐渐了解或估计所需的统计特性,并⼀次为根据⾃动调整⾃⼰的参数,以达到最佳滤波效果。⼀
旦输⼊信号统计特性发⽣变化,它⼜能跟踪这种变化,⾃动调整参数,使滤波器性能达到最佳。
2.2 ⾃适应算法
⾃适应算法主要是根据滤波器输⼊的统计特性进⾏处理,他可能还与滤波器
的输⼊及其它数据有关,据此,存在开环算法和闭环算法。开环算法的控制输出仅取决与滤波器的输⼊和其它输⼊数据;闭环的控制输出则是滤波器输出及其它输⼊信号的函数。闭环控制利⽤输出反馈,它不但能在滤波器输⼊信号变化时保持最佳输出,且还能在某种程度上补偿滤波原件参数的变化和误差及运算误差。缺点:存在稳定性问题及收敛度不⾼;开环算法的优点是调整速度快,⼀般⽆稳定性问题,但通常它要求的计算量⼤且不能补偿组件参数误差及运算误差,所以多⽤闭环算法。
图2 开环算法
图3 闭环算法
2.3 ⾃适应滤波去噪原理
⼀种⾃适应去噪滤波器原理如图1所⽰,信号x(k)受到宽带噪声n
1
(k)的污
染,与噪声相关的宽带信号n
2(k)是可以测量的。其中n
2
(k)是和n1(k)彼此相关
的噪声信号,⽽与信号x(k)不相关。如果将n
2
(k)作为⾃适应滤波器的输⼊,⽽将x(k)作为期望输出信号,通过对输出误差e(k)的控制,可以调整⾃适应滤波器的权系数w(k),权系数的更新使得它的输出y(k)趋于等于n1(k),则当滤波器稳定以后,⾃适应滤波器输出误差e(k)就是滤除了n1(k)的期望输出信号
x(k)。
图4 ⾃适应去噪滤波原理图
第三章⾃适应滤波器的LMS 算法
3.1 LMS 算法
最⼩均⽅算法(LMS-Least Mean Square)是⼀种很有⽤且很简单的估计梯度的⽅法,其突出的特点是计算量⼩,易于实现,且不要求脱线计算。最陡下降法每次迭代都需要知道性能曲⾯上某点的梯度值,⽽实际上梯度值只能根据观测数据进⾏估
计,LMS 算法是⼀种很有⽤且很简单的估计梯度的⽅法。其关键技术在于按照e(n)及各x(n)值,通过某种算法,确定
E[e2(n)]=min 时的各h*(n)值,从⽽⾃动调节各h(n)值⾄h*(n)值。
LMS 算法最核⼼的思想是⽤平⽅误差代替均⽅误差,即
[]
T
L w n e w n e w n e n n =?≈?/)(/)(/)()()(21202 1
∴ ()
2()
2()()e n e n e n x n w
δ∧
==- 2 将上式带如最陡下降法迭代计算权⽮量的公式,得
(1)()(())w n w n n µ+=+-? 3
LMS 算法的基本关系式
(1)()2()()w n w n e n x n µ+=+ 4
其中µ是收敛因⼦,决定了收敛速度和稳定性,µ满⾜:01max µλ<<<,
max λ是XX R 的最⼤特征值,}{
()()T XX R E X n X n = 5
许多学者对LMS 算法进⾏了研究,提出了传统LMS 算法的许多有效的改进措施:如采⽤变步长LMS 算法、变换域LMS 算法、QR 分解LMS 算法等,有效地克服了其性能局限性。
为了⽐较直观地观察和分析各种LMS 算法的收敛性能,借助MATLAB 强⼤的⼯程计算和绘图功能,通过MATLAB 语⾔编译.m ⽂件来实现各种算法的LMS 滤波器,⽤计算机仿真,对输⼊信号做相应的处理,并分析仿真结果。仿真结果中收敛曲线
均是采⽤蒙特卡罗仿真,独⽴运⾏100 次求其统计平均得到的。收敛曲线的横轴均为滤波器迭代次数。
3.2 时域LMS算法
传统的LMS算法具有计算量⼩,结构简单,易于实现等诸多优点,尤其是这种算法是最先由统计分析法导出的⼀种实⽤算法,它是⼀类⾃适应滤波器的基础。所以,详细分析时域LMS算法中个参数对算法的影响具有重要意义。下⾯就针对时域LMS算法各参数做⼀下讨论。
仿真抽样点数为N=512,滤波器阶数K=8,单频信号为
3.2.1 步长U
s=a*esp(i*0.05*pi*t),a=1,加⼊均值为零的⾼斯⽩噪声后信噪⽐为snr=10dB。
由仿真结果可看出:当U=0.2时,LMS算法不能收敛,U=0.01时,算法收敛较慢,不能跟踪输⼊信号的变化,⽽当U=0.135时,既能快速达到收敛,有较⼩的起始阶段误差,并达到较⼩的稳态误差。步长U的⼤⼩决定着算法的收敛速度和达到稳态的失调量的⼤⼩,对于常数U来说,算法的失调与⾃适应收敛过程是⼀对⽭盾,要想得到较快的收敛速度可选⽤⼤的U值,这将导致较⼤的失调量( 如果要满⾜失调量的要求,则收敛过程将受到制约。这⾥,仿真结果与理论值相⼀致。下⾯介绍的变步长LMS算法能有效解决这⼀⽭盾。
孕毒症3.2.2阶数K。仿真抽样点数为M=512,收敛步长U=0.135单频信号为
标志设计教案s=a*esp(i*0.05*pi*t),a=1,加⼊均值为零的⾼斯⽩噪声,信噪⽐为
dds信号发生器snr=10Db,做出k=6,8,10,12时的收敛曲线。该曲线表明:对于不同的滤波器阶数可得到不同的滤波效果,当K=8时稳态误差最
⼩,信号输出波形最好。这是因为LMS滤波器阶数K与稳态误差及输⼊信号特性有关,对于具体的输⼊信号,有⼀个最佳(或准最佳)的加权数⽬K使稳态误差最⼩,再增加权数⽬时,稳态误差有变⼤的可能.
3.2.3信噪⽐snr。仿真抽样点数为N=512,步长U=0.135单频信号为
s=a*esp(i*0.05*pi*t),a=1,阶数k=8。由计算机仿真图看出,当信噪⽐snr 升⾼时,LMS算法性能将急剧恶化。这可由频域LMS算法来克服时域LMS算法的性能局限。
3.2.4 ⾃适应滤波由于具有对⼲扰频率不敏感且其权值调整是基于对系统参数
的优化等特点,⼴泛地应⽤于信号检测、信号恢复、数字通信等领域。传统⾃适应滤波器主要在时域实现,该算法简单,稳健性能较好,因⽽被⼴
泛应⽤。
第四章基于LMS算法的⾃适应滤波器的仿真及性能分析
4.1 原理图
原始语⾳采⽤⽂件“audio. wav”,噪声采⽤⼀组频率为50Hz ,500Hz 和1000Hz 的正弦信号模拟,其结构图如图4 所⽰。
Results1
图4 语⾳去噪结构图
4.2 ⾃适应滤波源程序
程序清单:
Function[y,e]=1ms(x,d,u,N,e)
%
%[y,e]=1ms(x,d,u,N,e)
%u=2*收敛因⼦
%w=估计的FIR滤波器
%y=输出数组y(n)
%x=输⼊数组x(n)
%d=期望数组d(n),长度与x相同
%u=步长
%N=FIR滤波器的长度
%
M=length(x);
Y=zeros(1,M);
W=zeros(1,N)
ezeros(1,M);
for n=N:M;
x1=s(n:-1:n-N+1);
y(n)=h*x1;
e(n)=d(n)-y(n);
w(n)=w+u*e(n)*x1;
end知识树
数学学习与研究源程序:
Function lmsmain()
%
%主函数
%XS是周期性信号
%XN是⼲扰噪声
%
T=0:0.1:99.9;
Xs=10*sin(0.5*t);
Figure(1);
Subplot(211);
Plot(t,xs);grid;
Ylabei(‘幅值’);
Titl e(‘\it{输⼊周期性信号}’); Xn=randn(1,1000); Subplot(212);
Plot(t,xn);grid;
Ylabel(’幅值’);

本文发布于:2024-09-22 12:50:04,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/477300.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   信号   适应   收敛   误差
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议