Gointerface接口声明实现及作用详解
361
2022-09-04
【语音去噪】基于最小二乘自适应滤波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 3 仿真结果 4 参考文献 [1]徐艳, 李静. 基于LMS算法与RLS算法的自适应滤波[J]. 电子设计工程, 2012, 020(012):49-51,54. 博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。 部分理论引用网络文献,若有侵权联系博主删除。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~