关于DSP小波变换的有关问题
发布时间:2010-06-13 21:43:26 文章来源:www.iduyao.cn 采编人员:星星草
关于DSP小波变换的问题!
有那位高手有Matlab中小波去噪在TI tms320f2808中C的代码!
wden(data, 'heursure ', 's ', 'one ',2, 'sym8 ')
------解决方案--------------------
顶下帮你
------解决方案--------------------
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 ');
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
交通灯求助
最近需要做一个交通灯控制电路,有电路图,仿真,PCB图,希望得到能人的帮助,感激不尽!如果有这方面以前做了的资料,求发 我的邮...
-
ip网络摄像机
ip网络摄像机视频访问除了IP还需要知道些什么?要怎么访问?
------解决方案--------------------
安装程序中一般会...
-
初哥,Proteus缺少元件
这几天想做个东西,现学Proteus,可有两个元件tk11235,bss138库中找不到,网上下载了好多库装上还是没有。哪位大侠...
-
彩信MMS Notification问题
这是彩信通知的短信PDU:
0891683108200315F0640891015618450004802151902533238C0605040B8423F0A3
062...
-
网口 转USB口
个人大师好:
小弟有一个事情想请教大家:
我想通过网口和USB转换传输数据
具体过程如下:
数据通过网口传输到一个载体,这...
-
485串口 GPRS 通信设置问题
ARM7 控制485串口; ARM通过485-232转换口连接GPRS;
串口485的设置为 15200, 8 数据位 + 1 校验位,1停止位...
-
使用RS232转485转换器时,不小心将485A和485B碰在一起,会把转换器烧坏吗?用的转换器是有源的。
使用RS232转485转换器时,不小心将485A...
-
IAR中内存断续??
环境是IAR4.21 FOR MSP430F5438;
我在原函数的基础上(原函数正常运行)定义了一个全局数组A,大概2Kbyte;
出现情况如下:
...
-
S3C2440开发
我买了一块 S3C2440 的开发板,只配了H-JTAG,和串口 ,USB 。但是我使用的是笔记本。
不能使用H-JTAG,能有什么其他办法...
-
买的DSP5509A的开发板和XDS510仿真器,连接不上,急!请教各位
在网上买了一块DSP5509A的开发板和XDS510仿真器,完全按照给的视频的提示,...