yyhwiener.m

来自「这是一个wiener滤波程序」· M 代码 · 共 49 行

M
49
字号
load handel
%sound(5*y,Fs)    %原始语音信号,Fs=9192
d=y;
d=d*8;
d=d';
fq=fft(d,8192);
subplot(3,1,1);
f=Fs*(0:4095)/8192;
plot(f,abs(fq(1:4096)));
title('原始语音信号的频域图形');
xlabel('频率 f');
ylabel('FFT');
[m,n]=size(d);
x_noise=randn(1,n);
x=d+x_noise;    %加入噪声后的语音信号,噪声为(0,1)分布的高斯白噪声
fq=fft(x,8192);
subplot(3,1,2);
plot(f,abs(fq(1:4096)));
title('加入噪声后语音信号的频域图形');
xlabel('频率 f');
ylabel('FFT');

yyhxcorr=xcorr(x(1:4096));
size(yyhxcorr);
A=yyhxcorr(4096:4595);
yyhdcorr=xcorr(d(1:4096),x(1:4096));
size(yyhdcorr);
B=yyhdcorr(4096:4595);
M=500;
yyhresult=wienerfilter(x,A,B,M);   %用维纳滤波进行去噪
yyhresult=yyhresult(300:8192+299);
fq=fft(yyhresult);
subplot(3,1,3);
f=Fs*(0:4095)/8192;
plot(f,abs(fq(1:4096)));
title('经过维纳滤波后语音信号的频域图形');
xlabel('频率 f');
ylabel('FFT');










⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?