matlab实现的自适应滤波算法
扫描二维码
随时随地手机看文章
MATLAB是美国MathWorks公司开发的大型数学计算应用软件系统,它提供了强大的矩阵处理和绘图功能,简单易用,可信度高,灵活性好,因而在世界范围内被科学工作者、工程师以及大学生和研究生广泛使用,目前已经成为国际市场上科学研究和工程应用方面的主导软件。掌握MATLAB并借助它解决理论与应用问题已经成为每一个从事科学研究和工程技术人员应该具备的技能。
MATLAB是Matrix Laboratory(矩阵实验室)的缩写,是当前最流行、功能强大的科技应用软件和编程语言之一。MATLAB语言有以下特点:
1、功能强大:数值计算和符号计算,计算和编程可视化,数字和文字的统一处理,离线和在线计算;
2、界面友好,语言简明:以复数矩阵为计算单元,指令表达与数学表达式相近,是一种演算式语言;
3、开放性强:具有70余个功能强大的工具箱,覆盖面极广,可以完成数字图像处理、系统仿真、系统辨识、模糊控制、神经网络建模、信号处理、鲁棒控制、非线性控制、优化理论、统计分析等。
MATLAB成为应用学科计算机辅助分析、设计、仿真、教学必不可少的基础软件。工具箱函数为各个领域的研究和工程应用提供了有力的手段。
MATLAB系统的基本函数库具有初等函数、初等矩阵和矩阵变换、包括性代数方程组和矩阵特征值问题等数值线性代数、多项式运算和求根、数据析和傅立叶变换以及某些特殊的矩阵函数和数学函数等众多内容。
MATLAB还包括一系列被称作工具箱(TOOLBOX)的专业求解工具。工具箱实际上是MATLAB针对不同学科、不同专业所开发的专用函数库,用来求解各个领域的数值计算问题,包括数据采集工具箱、信号处理工具箱、图像处理工具箱、小波分析工具箱、控制工具箱等。随着MATLAB的不断升级,所含工具箱的功能越来越丰富,规模越来越庞大,因此,应用也越来越广泛,成为各种专业科研人员和工程技术人员的得力工具。
一个图形界面的完成,最终是通过图形界面的各种控件对象的操作来完成,而这些操作必定是通过Matlab 中函数代码的执行来完成的。函数代码的编制可以通过编写回调函数完成,而编写时当所要求执行的指令比较简单时,可以把该控件的代码直接写在“CallBack“属性中;当所要求执行的指令比较长时可以把函数代码放在一个自定义的M 文件中,在“CallBack”中直接将其文件名写上,也可以在主控文件中直接编写,当操作该控件时系统会自动执行“CallBack”中所要求执行的内容。
在本设计中,采用的是在主控文件中直接编写的方法,在GUI 界面单击当前需要编写程序的控件,然后右击将出现一个右键菜单,然后选择Callback 选项,即可直接进入主控M 文件,并且系统会自动生成语句。
目前的MATLAB已经成为国际上最为流行的软件之一,它除了传统的交互式编程之外,还提供了丰富可靠的矩阵运算、图形绘制、数据处理、图形处理,方便的windows编程等便利工具,出现了各种以MATLAB为基础的实用工具箱,广泛地应用于自动控制、图像信号处理、生物医学工程、语言处理、雷达工程、信号分析、振动理论、时序分析于建模、优化设计等领域。
算法实现设计本课题的主要内容是在MATLAB上实现自适应滤波器的设计。课题的具体内容
为利用GUI界面设计出滤波器的选择界面、参数的输入界面、结果分析图等。其中滤波器的设计将会用两种算法实现既LMS算法和RLS算法,算法实现的基本设计框图如图4所示。
由于本论文要实现两种不同的算法,通过GUI界面设计能给人一个比较好直观的效果。同时两种算法在参数取值方面会有不同之处,因此在软件设计中,我通过文本编辑框控件来接收用户输入的滤波器设计指标值,这让我们能更方便的通过调整不同的参数值观测实验结果,从而来保证滤波器的最佳状态。此外,Matlab 通过创建应用程序M 文件为GUI控制程序提供一个框架。所有代码都包含在应用程序M 文件中,即完成了图形界面的设计后,应用程序设计的主要工作是控件回调函数的设计。自适应滤波算法的主界面如图5。
LMS算法的实现
LMS算法实现流程图如图6。
在图中,w(k)为滤波器滤波系数矢量估值,w(k+1)=w(k)-u,u是一个控制因子,用它来控制收敛速度与稳定性,u太大不稳定,u太小收敛速度很慢。通常0《u《1/max,max是R中的最大的特征值。(k)是误差梯度,直接计算(k)=J(w)/w很复杂,一般直接用误差的平方作为均方误差E|e(k)2估计值(k)。因为E{(k)}=k表明(k)是无偏估计。
直到计算到达到(e)k预期小的值为止,或(w)k达到稳定为止。
根据u的取值不同LMS算法可分为以下三种类型: