当前位置 : 主页 > 编程语言 > python >

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

来源:互联网 收集:自由互联 发布时间:2022-06-15
1 简介 自适应信号处理的理论和技术已经成为人们常用滤波和去噪技术。文中讲述了自适应滤波的原理以及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 所示。

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

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

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

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

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

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

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

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

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

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

【语音去噪】基于最小二乘自适应滤波LMS和RLS实现语音去噪含Matlab源码_上传_11转存失败重新上传取消

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

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

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); % FFT
y_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)];
end
output=output/max(abs(output)); % 幅值归一

3 仿真结果

【语音去噪】基于最小二乘自适应滤波LMS和RLS实现语音去噪含Matlab源码_自适应_14转存失败重新上传取消

【语音去噪】基于最小二乘自适应滤波LMS和RLS实现语音去噪含Matlab源码_信号处理_15正在上传…重新上传取消

4 参考文献

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

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

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

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

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

网友评论