LMS自适应滤波的MATLAB实现
LMS自适应滤波是使输入序列(多频混合带噪语音信号)与期望输出序列(纯语音信号)之间的均方误差最小。目前,实现LMS自适应滤波的方法有很多,这里我给出几种简单,方便的实现方法。
- 自己编写子函数
这个子函数是我在别人基础上进行修改得到的,主要是调整了输出序列的前1:M-1个数值,以及对应的输出误差序列。
参考博客:
https://blog.csdn.net/future_fighter/article/details/2334181
程序代码如下:
注意:其中权值更新的过程采用最陡下降法,最终的滤波输出用最后一次的权向量来计算。
function [yn,W,en1,u] = LMS_dps(xn,dn,M,mu,itr)
% %--------------LMS(Least Mean Squre)算法----------% %
% %------------------输入参数-----------------------% %
% xn 输入的信号序列 (列向量)-----带噪信号
% dn 所期望的响应序列 (列向量)-----纯信号
% M 滤波器的阶数 (标量)
% mu 收敛因子(步长) (标量) 0<mu<u
% itr 迭代次数 (标量) 默认为xn的长度,M < itr < length(xn)---不用管!