【语音去噪】最小二乘法(LMS)自适应滤波器matlab源码

一、简介


 二、源代码

```c
%该程序实现时域LMS算法,并用统计的方法仿真得出不同步长下的收敛曲线
clear                     %   清空变量空间
close all

g=100;                    %   统计仿真次数为g
N=1024;                    %   输入信号抽样点数N
k=128;                      %   时域抽头LMS算法滤波器阶数
pp=zeros(g,N-k);          %   将每次独立循环的误差结果存于矩阵pp中,以便后面对其平均
u=0.001;                
for q=1:g                 
t=1:N;
a=1;
s=a*sin(0.05*pi*t);     %   输入单频信号s 
figure(1);
subplot(311)
plot(t,real(s));          %   信号s时域波形
title('信号s时域波形');
xlabel('n');
ylabel('s');
axis([0,N,-a-1,a+1]);
xn=awgn(s,3);            %   加入均值为零的高斯白噪声,信噪比为3dB    
% 设置初值
y=zeros(1,N);             %   输出信号y
y(1:k)=xn(1:k);           %   将输入信号xn的前k个值作为输出y的前k个值
w=zeros(1,k);          %   设置抽头加权初值
e=zeros(1,N);             %   误差信号
% 用LMS算法迭代滤波
for i=(k+1):N
    XN=xn((i-k+1):i);  
    y(i)=w*XN';
    e(i)=s(i)-y(i);
    w=w+u*e(i)*XN;    
end
pp(q,:)=(e(k+1:N)).^2;   
end
subplot(312)
plot(t,real(xn));          %   信号s时域波形
plot(t,real(y));          %   信号s时域波形
title('自适应滤波后的输出时域波形');
for b=1:N-k
bi(b)=sum(pp(:,b))/g; %   求误差的统计平均
end

三、运行结果 

 

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值