自适应滤波及其Python实现

由于原博客在word里编辑,插入了很多Mathtype公式,而CSDN不支持Mathtype,转换格式出现了很多麻烦和排版混乱,故此博客部分采用截图展示。

原理

自适应滤波及其Python实现_第1张图片
自适应滤波及其Python实现_第2张图片
自适应滤波及其Python实现_第3张图片
自适应滤波及其Python实现_第4张图片
自适应滤波及其Python实现_第5张图片

程序及结果

Python
程序:
(1)LMS算法
自适应滤波及其Python实现_第6张图片
自适应滤波及其Python实现_第7张图片
自适应滤波及其Python实现_第8张图片
自适应滤波及其Python实现_第9张图片
(2)求MSE
自适应滤波及其Python实现_第10张图片
自适应滤波及其Python实现_第11张图片
自适应滤波及其Python实现_第12张图片
自适应滤波及其Python实现_第13张图片
结果:
自适应滤波及其Python实现_第14张图片
自适应滤波及其Python实现_第15张图片

分析

图1.1上图是滤波器输入信号,即滤波前含噪声的接收信号x(n)波形,从图中我们可以看出,输入信号中的噪声引起波形的随机性,对于有效信号s(n)的原波形造成了不同程度的波动,要想近乎完美的得到s(n)信号,必须进行滤波,而又因为噪声的随机性,仅靠一个固定参数的滤波器是不行的,需要能够利用前一时刻已获得的滤波器参数等结果,自动地调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而才能实现最优滤波。
图1.1下图中蓝色是期望输出信号s(n),红色是滤波实际输出信号s(n)估计。程序中我取了序列长度为256点,然后训练次数为128次,结果如图所示。对比两个波形,以及与上面的滤波前信号相比较,可以发现,滤波效果几乎和期望结果相一致。前一部分的滤波输出波形有一定偏差,分析是因为取信号向量时,由于程序设定信号序列长度为N,范围是从0-N-1,故信号向量中,x(n-i)项中索引小于0的部分便默认为0,故实际输出序列前一部分,由于n值较小,导致信号向量中的有效数据较少,其他都设置为0,但这并不影响整体的滤波效果。
图1.2中,画出了输出与期望均方误差随着迭代次数变化的曲线。程序中设定序列长度为64,然后分别探究迭代1-60次时的输出与期望的误差,每种迭代次数重复进行200次,对每一次的误差进行平方求和再求平均得到该迭代次数的均方误差,画出图像。由图像可知,随着迭代次数的增加,均方误差逐渐收敛于0,符合该算法的收敛性要求。
下载链接:
自适应滤波算法及均方误差随迭代次数的变化

你可能感兴趣的:(Python,随机信号分析,python,算法,信号处理,自适应滤波)