matlab信号处理学习总结(7)

2019-03-15 12:26

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'); de>

小波分析在分离信号的不同成分中的应用

1.正弦信号加白噪声

下面使用小波分析一个由正弦信号(正弦信号的周期约为200)加白噪声组成的信号,说 明小波分析如何分离这两种信号。

程序代码如下所示:

load noissin; x=noissin; figure;

subplot(611);

plot(x);

ylabel('x');

%使用 db5对信号进行 5层分解。 [c,l]=wavedec(x,5,'db5'); for i=1:5

%对分解的第 5层到第 1层的低频系数进行重构 a=wrcoef('a',c,l,'db5',6-i); subplot(6,1,i+1); plot(a);

ylabel(['a',num2str(6-i)]); end

figure;

subplot(611) plot(x); ylabel('x'); for i=1:5

%对分解的第 5层到第 1层的高频系数进行重构

d=wrcoef('d',c,l,'db5',6-i); subplot(6,1,i+1); plot(d);

ylabel(['d',num2str(6-i)]); end

小波分解的细节信号是由白噪声分解得到的,而正弦信号可以在图中的近似信号 a5得 到,因为这一层噪声对正弦信号的影响可以忽略了。

2.正弦信号加三角波

下面通过使用小波分析一个由正弦信号(正弦信号的周期为20)加三角波组成的信号,

说明小波分析如何分离这两种信号。 程序代码如下: load trsin; x=trsin;

subplot(711); plot(x); axis tight; ylabel('x');

%使用 db5对信号进行 6层分解。 [c,l]=wavedec(x,6,'db5'); for i=1:6

%对分解的第 6层到第 1层的低频系数进行重构 a=wrcoef('a',c,l,'db5',7-i); subplot(7,1,i+1); plot(a);

axis tight;

ylabel(['a',num2str(7-i)]); end

figure;

subplot(711); plot(x); axis tight;

ylabel('x'); for i=1:6

%对分解的第 5层到第 1层的高频系数进行重构 d=wrcoef('d',c,l,'db5',7-i); subplot(7,1,i+1); plot(d); axis tight;

ylabel(['d',num2str(7-i)]); end

例子 3 应用小波分析来识别某一频率区间上的信号

在本例中,使用小波分析一个由三个不同频率的正弦信号叠加的信号,看是否能将这三

个正弦信号区分开来,结果证明小波分析可以很好地识别某一频率区间的信号。 程序代码如下: load sumsin; x=sumsin;

figure;

subplot(611); plot(x); ylabel('x');

title('原始信号以及各层近似信号')

%使用 db3小波进行 5层分解 [c,l]=wavedec(x,5,'db3'); for i=1:5

%对分解的第 5层到第 1层的低频系数分别进行重构 a=wrcoef('a',c,l,'db3',6-i); subplot(6,1,i+1); plot(a);

ylabel(['a',num2str(6-i)]); end


matlab信号处理学习总结(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《天鹅的故事》课堂实录

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: