【语音去噪】基于最小二乘自适应滤波LMS和RLS实现语音去噪含Matlab源码

1 简介

自适应信号处理的理论和技术已经成为人们常用滤波和去噪技术。文中讲述了自适应滤波的原理以及LMS算法和RLS算法两种基本自适应算法的原理及步骤。并用MATLAB分别对两种算法进行了自适应滤波仿真和实现。

自适 应 滤波 就 是 利用 前 一 时 刻 获 得 滤 波 器 参 数 的 结 果自动的调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。 自适应滤波器 实 质 上就 是 一 种能 调 节 其自 身 传 输特 性 以 达到 最 优 的 维纳滤波器。 自适应滤波器的特性变化是由自适应算法通过调整滤波器系数来实现的。 一般而言,自适应滤波器由参数可调的数字滤波器和自适应算法两部分组成。 参数可调数字滤波器可以是 FIR 数字滤波器或 IIR 数字滤波器, 也可以是格型数字滤波器。 自适应滤波器的一般结构如图 1 所示。 图 1 中 x(n)为输入信号,通过参数可调的数字滤波器后产生 输 出信 号 y(n),将 输出 信 号 y(n)与期 望 信 号 d(n)进 行比较,得到误差信号 e(n)。 e(n)和 x(n)通过自适应算法对滤波器的参数进行调整,调整的目的使得误差信号 e(n)最小。自适应滤波器大多用 FIR 来实现。 直接型自适应滤波器FIR 滤波器如图 2 所示。

2 部分代码

function output=SpectralSub(signal,wlen,inc,NIS,a,b)wnd=hamming(wlen);                      % 设置窗函数N=length(signal);                       % 计算信号长度y=enframe(signal,wnd,inc)';             % 分帧fn=size(y,2);                           % 求帧数y_fft = fft(y);                         % FFTy_a = abs(y_fft);                       % 求取幅值y_phase=angle(y_fft);                   % 求取相位角y_a2=y_a.^2;                            % 求能量Nt=mean(y_a2(:,1:NIS),2);               % 计算噪声段平均能量nl2=wlen/2+1;                           % 求出正频率的区间for i = 1:fn;                           % 进行谱减    for k= 1:nl2        if y_a2(k,i)>a*Nt(k)            temp(k) = y_a2(k,i) - a*Nt(k);        else            temp(k)=b*y_a2(k,i);        end        U(k)=sqrt(temp(k));             % 把能量开方得幅值    end    X(:,i)=U;end;output=OverlapAdd2(X,y_phase(1:nl2,:),wlen,inc);   % 合成谱减后的语音Nout=length(output);                    % 把谱减后的数据长度补足与输入等长if Nout>N    output=output(1:N);elseif Nout<N    output=[output; zeros(N-Nout,1)];endoutput=output/max(abs(output));         % 幅值归一

3 仿真结果

4 参考文献

[1]徐艳, 李静. 基于LMS算法与RLS算法的自适应滤波[J]. 电子设计工程, 2012, 020(012):49-51,54.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

matlab科研助手

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

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

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

打赏作者

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

抵扣说明:

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

余额充值