预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共28页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

改进阈值函数进行语音信号消噪但是在程序运行过程中频频报错。本人经验不足调试不出希望求得各位指导。改进函数表达式附图clearall;clc;closeall;fs=8000;%语音信号采样频率为8000xx=wavread('lw1.wav');x1=xx(:1);%取单声道t=(0:length(x1)-1)/8000;y1=fft(x12048);%对信号做2048点FFT变换f=fs*(0:1023)/2048;figure(1)plot(tx1)%做原始语音信号的时域图形y=awgn(x1'10'measured');%加10db的高斯白噪声[snrmse]=snrmse(x1y')%求得信噪比均方误差figure(2)plot(ty)%做加噪语音信号的时域图形[cl]=wavedec(y3'db1');%多尺度一维分解%用db1小波对信号进行3层分解并提取系数a3=appcoef(cl'db1'3);%a2=appcoef(cl'db1'2);%a1=appcoef(cl'db1'1);d3=detcoef(cl3);d2=detcoef(cl2);d1=detcoef(cl1);thr1=thselect(d1'rigrsure');%阈值获取使用Stein的无偏风险估计原理thr2=thselect(d2'rigrsure');thr3=thselect(d3'rigrsure');%利用改进阈值函数进行去噪处理gd1=Garrote_gg(d1thr1);gd2=Garrote_gg(d2thr2);gd3=Garrote_gg(d3thr3);c1=[a3gd3gd2gd1];y1=waverec(c2l'db1');%多尺度重构[snrmse]=snrmse(x1y1')%求得信噪比均方误差figure(3);plot(ty1);functiongd=Garrote_gg(ab)%a为信号分解后的小波系数b为获得的阈值m=0.2*((a*a)-(b*b));if(abs(a)>=b)gd=sign(a)*(abs(a)-b/exp(m));else(abs(a)<b)gd=0;endfunction[snrmse]=snrmse(IIn)%计算信噪比函数%I:原始信号%In:去噪后信号snr=0;Ps=sum(sum((I-mean(mean(I))).^2));%signalpowerPn=sum(sum((I-In).^2));%noisepowersnr=10*log10(Ps/Pn);mse=Pn/length(I);QQ截图20130516175535.png(11.18KB下载次数:0)改进函数表达式本帖最后由罗志雄于2013-5-1621:58编辑function[snrmse]=snrmse(IIn)%计算信噪比函数%I:原始信号%In:去噪后信号snr=0;Ps=sum(sum((I-mean(mean(I))).^2));%signalpowerPn=sum(sum((I-In).^2));%noisepowersnr=10*log10(Ps/Pn);mse=Pn/length(I);修改后程序清单如下:clearall;clc;closeall;fs=8000;%语音信号采样频率为8000xx=wavread('lw1.wav');x1=xx(:1);%取单声道x1=x1-mean(x1);t=(0:length(x1)-1)/8000;y1=fft(x12048);%对信号做2048点FFT变换f=fs*(0:1023)/2048;figure(1)plot(tx1)%做原始语音信号的时域图形y=awgn(x1'10'measured');%加10db的高斯白噪声[snrmse]=snrmsel(x1'y)%求得信噪比均方误差snr1=SNR_singlech(x1'y)figure(2)plot(ty)%做加噪语音信号的时域图形[cl]=wavedec(y3'db1');%多尺度一维分解%用db1小波对信号进行3层分解并提取系数a3=appcoef(cl'db1'3);%a2=appcoef(cl'db1'2);%a1=appcoef(cl'db1'1);d3