matlab小波去噪的函数

通过小波去噪实现信号的去噪功能。小波被设置为由 90 个系数组成的 Daubechies “dB45”,以及 14 级分解。将软 Donoho-Johnstone 通用阈值应用于小波系数,并使用电平噪声的电平相关估计进行重新缩放。还使用带通频率设置为 10 kHz 和带通纹波等于 0.2 dB 的 5 阶高通滤波器对数据进行了预滤波。
matlab中有相关的实现函数吗?

当然有啊,db小波基为例:

clc,clear
%装载采集的信号 leleccum.mat 
x = audioread('MUsic_Test.wav');
Fs = 44100;
windowLength = 256;%帧长
win = hamming(windowLength,'periodic');%窗口函数(汉明窗)
overlap = 128; %帧移(一般为帧长的一半)
ffTLength = windowLength; %做DFT的点数,一般和帧长一样
snr = 20;  %设定信噪比,单位dB
noise = randn(size(x));         % 用randn函数产生高斯白噪声
Nx = length(x);                 % 求出信号x长
signal_power = 1/Nx*sum(x.*x);  % 求出信号的平均能量
noise_power = 1/Nx*sum(noise.*noise);  % 求出噪声的能量
noise_variance = signal_power / ( 10^(snr/10) );  % 计算出噪声设定的方差值
noise = sqrt(noise_variance/noise_power)*noise;   % 按噪声的平均能量构成相应的白噪声
y = x + noise;                  % 合成带噪语音
[c,l]=wavedec(y,3,'db4');
[thrl,nkeep]=wdcbm(c,l,3);
% thrl = thselect(y,'rigrsure');
[xd1,cxd,lxd,perf0,perfl2] = wdencmp('lvd',c,l,'db4',3,thrl,'s');
noise_Power0 = sum(abs(y'-x').^2)/length(y'-x');
SNR0 = 10*log10(signal_power/noise_Power0);
disp(['带噪语音信噪比:',num2str(SNR0)])
noise_Power2 = sum(abs(xd1-x).^2)/length(xd1-x);  %(带噪信号-纯信号)的平方
SNR1 = 10*log10(signal_power/noise_Power2);
disp(['db4小波软阈值法信噪比:',num2str(SNR1)])
subplot(4,2,1)
plot(x);
subplot(4,2,2)
spectrogram(x,win,overlap,ffTLength,Fs,'yaxis'); 
title('纯净信号语谱图')
subplot(4,2,3)
plot(y);
subplot(4,2,4)
spectrogram(y,win,overlap,ffTLength,Fs,'yaxis');
title('带噪信号语谱图')
subplot(4,2,5)
plot(xd1);
subplot(4,2,6)
spectrogram(xd1,win,overlap,ffTLength,Fs,'yaxis'); 
title('db4小波软阈值去噪语谱图')
subplot(4,2,7)
[xd2,cxd2,lxd2,perf1,perf22] = wdencmp('lvd',c,l,'db4',3,thrl,'h');
noise_Power2 = sum(abs(xd2-x).^2)/length(xd2-x);  %(带噪信号-纯信号)的平方
SNR2 = 10*log10(signal_power/noise_Power2);
disp(['db4小波硬阈值法信噪比:',num2str(SNR2)])
plot(xd2);
subplot(4,2,8)
spectrogram(xd2,win,overlap,ffTLength,Fs,'yaxis'); 
title('db4小波硬阈值去噪语谱图')
sgtitle('dbN小波去噪')
disp(['db4小波软阈值去噪后语音成分能量:',num2str(sum(abs(xd1-(y-x)))),'dB'])
disp(['db4小波硬阈值去噪后语音成分能量:',num2str(sum(abs(xd2-(y-x)))),'dB'])

img

还有你说的带通等波纹设计滤波器用的函数,数字信号处理教材上都能找到详细的例子,比如:

%等波纹逼近法设计
clc;
clear;
f=[0.25,0.5];
m=[0,1];
rp=1;
rs=40;
dat1=(10^(rp/20)-1)/(10^(rp/20)+1);
dat2=10^(-rs/20);
rip=[dat2,dat1];
[M,fo,mo,w]=remezord(f,m,rip);
M=M+1;
hn=remez(M,fo,mo,w);
subplot(3,3,7);
stem(hn);title('等波纹法hn')
Hk=fft(hn,1024);
wk=0:1023;wk=2*wk/1024;
subplot(3,3,8);
plot(wk,20*log10(abs(Hk)));title('等波纹法设计的损耗函数');grid;
xlabel('\omega/\pi');ylabel('幅度(dB)');axis([0,1,-90,10]);

subplot(3,3,9);
plot(wk,abs(Hk));title('等波纹法设计的幅频特性');grid;
xlabel('\omega/\pi');ylabel('幅度');axis([0,1,0.1,1.1]);

参考:https://zhuanlan.zhihu.com/p/321853957