日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

dwt去噪 matlab,用matlab进行小波去噪的程序

發布時間:2024/1/23 循环神经网络 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dwt去噪 matlab,用matlab进行小波去噪的程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

換成原信號是正弦信號 加載的噪聲是高斯白噪聲 應該怎么改 這是我下載的程序 (我論文要求比較三種小波基去噪的效果。可不可以幫我看一下 我是菜鳥啊 不會)拜托拜托

clear

clc

%在噪聲環境下語音信號的增強

%語音信號為讀入的聲音文件

%噪聲為正態隨機噪聲

sound=wavread('c12345.wav');

count1=length(sound);

noise=0.05*randn(1,count1);

for i=1:count1

signal(i)=sound(i);

end

for i=1:count1

y(i)=signal(i)+noise(i);

end

%在小波基'db3'下進行一維離散小波變換

[coefs1,coefs2]=dwt(y,'db3'); %[低頻 高頻]

count2=length(coefs1);

count3=length(coefs2);

energy1=sum((abs(coefs1)).^2);

energy2=sum((abs(coefs2)).^2);

energy3=energy1+energy2;

for i=1:count2

recoefs1(i)=coefs1(i)/energy3;

end

for i=1:count3

recoefs2(i)=coefs2(i)/energy3;

end

%低頻系數進行語音信號清濁音的判別

zhen=160;

count4=fix(count2/zhen);

for i=1:count4

n=160*(i-1)+1:160+160*(i-1);

s=sound(n);

w=hamming(160);

sw=s.*w;

a=aryule(sw,10);

sw=filter(a,1,sw);

sw=sw/sum(sw);

r=xcorr(sw,'biased');

corr=max(r);

%為清音(unvoice)時,輸出為1;為濁音(voice)時,輸出為0

if corr>=0.8

output1(i)=0;

elseif corr<=0.1

output1(i)=1;

end

end

for i=1:count4

n=160*(i-1)+1:160+160*(i-1);

if output1(i)==1

switch abs(recoefs1(i))

case abs(recoefs1(i))<=0.002

recoefs1(i)=0;

case abs(recoefs1(i))>0.002 &abs(recoefs1(i))<=0.003

recoefs1(i)=sgn(recoefs1(i))*(0.003*abs(recoefs1(i))-0.000003)/0.002;

otherwise recoefs1(i)=recoefs1(i);

end

elseif output1(i)==0

recoefs1(i)=recoefs1(i);

end

end

%對高頻系數進行語音信號清濁音的判別

count5=fix(count3/zhen);

for i=1:count5

n=160*(i-1)+1:160+160*(i-1);

s=sound(n);

w=hamming(160);

sw=s.*w;

a=aryule(sw,10);

sw=filter(a,1,sw);

sw=sw/sum(sw);

r=xcorr(sw,'biased');

corr=max(r);

%為清音(unvoice)時,輸出為1;為濁音(voice)時,輸出為0

if corr>=0.8

output2(i)=0;

elseif corr<=0.1

output2(i)=1;

end

end

for i=1:count5

n=160*(i-1)+1:160+160*(i-1);

if output2(i)==1

switch abs(recoefs2(i))

case abs(recoefs2(i))<=0.002

recoefs2(i)=0;

case abs(recoefs2(i))>0.002 &abs(recoefs2(i))<=0.003

recoefs2(i)=sgn(recoefs2(i))*(0.003*abs(recoefs2(i))-0.000003)/0.002;

otherwise recoefs2(i)=recoefs2(i);

end

elseif output2(i)==0

recoefs2(i)=recoefs2(i);

end

end

%在小波基'db3'下進行一維離散小波反變換

output3=idwt(recoefs1, recoefs2,'db3');

%對輸出信號抽樣點值進行歸一化處理

maxdata=max(output3);

output4=output3/maxdata;

%讀出帶噪語音信號,存為'101.wav'

wavwrite(y,5500,16,'c101');

%讀出處理后語音信號,存為'102.wav'

wavwrite(output4,5500,16,'c102');

只需要比較三個小波基去噪的效果 其他沒有要求

總結

以上是生活随笔為你收集整理的dwt去噪 matlab,用matlab进行小波去噪的程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。