一维信号短时傅里叶变换域邻域降噪方法(MATLAB)

噪声在人类日常生活中无处不在,其会降低语音信号的质量和可懂度。在低信噪比的恶劣环境中,这种负面影响愈发严重。为了解决这个问题,众多研究人员在过去的几十年里提出了许多降噪算法。

根据原理的不同,降噪算法可大致分为五类:谱减法、最优滤波法、基于统计模型的方法、子空间方法、以及基于机器学习的方法。其中,最优滤波法是较为常用的一类,其将降噪问题转化为最优滤波器的设计问题。根据采用麦克风数量的不同,降噪算法又可分为单通道和多通道两类。此外,根据处理噪声信号的域,这些算法可以分为时域和变换域(如短时傅里叶变换域降噪算法。虽然这些方法已经取得了一定程度上的成功,但降噪仍然是一项具有挑战性的任务。基于相邻帧STFT系数互不相关的假设,早期的STFT域最优降噪方法绝大多数都是滤波增益,即每个频点的滤波器长度为1。然而,由于语音降噪时,语音帧需要有相互重叠,并且语音信号本身是强自相关的,所以当前帧的STFT系数与相邻帧的STFT系数高度相关。基于帧间相关性的不可忽略性,可推导出一组最优滤波器。

鉴于此,采用短时傅里叶变换域邻域降噪方法对一维信号进行降噪,运行环境为MATLAB 2021B。

Matlab 复制代码
[DD,DDT,DDTDD] = defDDt(N); % 2d Order difference operators.

    for k = 1:Nit
        u_old = u;
        
        %% u sub-problem %%
        % Solves a linear system using the conjugate gradient method.
        [u,~] = cgs(rho*DDTDD + lam*speye(N),lam*f+rho*DDT*(v - mu/rho),1e-5,100);
        
        %% v sub-problem %%
        x    = DD*u + mu/rho;
        v    = shrink(x, 1/rho);
        
       %% Update Lagrange multiplier
        mu   = mu + (DD*u - v);
        
        r1   = u - f;
        funcVal(k) = (lam/2)*norm(r1,'fro')^2 + sum(v(:));
    
    end
    
    out.sol = u;
    out.funVal = funcVal(1:k);

end

function [DD,DDT,DDTDD] = defDDt(N)
%Create a first order difference matrix D
e = ones(N,1);
B = spdiags([e -e], [1 0], N, N);
B(N,1) =  1;

D = B; 
clear B;
DD = D*D;
clear D;
% Create the transpose of D
DDT = DD'; %Remember that DT = -D, also called the backward difference.
DDTDD = DD'*DD;
end

function z = shrink(x,r)
z = sign(x).*max(abs(x)- r,0);
end


完整代码:https://mbd.pub/o/bread/ZJyTl5lq
擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。
  • 擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。
相关推荐
FIN66681 分钟前
昂瑞微:引领射频前端国产化浪潮,铸就5G时代核心竞争力
前端·人工智能·科技·5g·芯片·卫星
bylander10 分钟前
【论文阅读】通义实验室,VACE: All-in-One Video Creation and Editing
论文阅读·人工智能·计算机视觉·音视频
猫头虎22 分钟前
如何解决 pip install -r requirements.txt extras 语法 ‘package[extra’ 缺少 ‘]’ 解析失败问题
开发语言·python·开源·beautifulsoup·virtualenv·pandas·pip
zhangfeng113323 分钟前
R语言 读取tsv的三种方法 ,带有注释的tsv文件
开发语言·r语言·生物信息
nju_spy30 分钟前
复杂结构数据挖掘(二)关联规则挖掘 Association rule mining
人工智能·数据挖掘·关联规则挖掘·apiriori·dhp·fp-growth·高频集
刀客Doc35 分钟前
刀客doc:亚马逊广告再下一城,拿下微软DSP广告业务
大数据·人工智能·microsoft
eqwaak035 分钟前
动态图表导出与视频生成:精通Matplotlib Animation与FFmpeg
开发语言·python·ffmpeg·音视频·matplotlib
刘新明198937 分钟前
Frida辅助分析OLLVM虚假控制流程(下)
java·开发语言·前端
搂鱼1145141 小时前
GJOI 10.7/10.8 题解
算法
第二只羽毛1 小时前
重载和继承的实践
java·开发语言