关于小波分解语音信号的问题
最近在做一个实验,需要将语音信号分段,每段16个点,然后分别做DWT变换。然后不做任何处理,再做IDWT变换。但是得到的信号失真很大。百思不得其解,希望大家想想办法,谢谢了、代码如下
clear all;
clc;
%读入声音
=wavread('ceshilong.wav');
AA=aa';
A(1:80000)=AA(1:80000);
for i=1:65536 % 4096*16=65536,候采样频率是22.05KHZ
Ae(i)=A(i);
end
for k=1:4096
%将原始音频信号分段,每段16个数据
Aef(k,(1:16))=Ae(((k-1)*16+1):((k-1)*16+16));
%将每个音频段进行dwt变换
=wavedec(Aef,3,'db4');
ca3=appcoef(c,l,'db4',3);
=detcoef(c,l,);
c1_m=;
A_m(k,(1:16))=waverec(c1_m,l,'db4');
Aey(1,(((k-1)*16+1):((k-1)*16+16)))=A_m(k,(1:16));
end
Am=Aey;
wavwrite(Am,fs,nbits,'DWT.wav');
subplot(211)
Aw=(Aw-min(min(Aw)))/(max(max(Aw))-min(min(Aw)))*225;
plot(Aw);
xlabel('采样点数');
ylabel('归一化幅度');
title('变换后的语音图像')
subplot(212)
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;
plot(A);
xlabel('采样点数');
ylabel('归一化幅度');
title('原始语音图像')
toc; 把下语句
=wavedec(Aef,3,'db4');
修改为
=wavedec(Aef(k,:),3,'db4');
问题解决了
太感谢songzy41,原来问题出在这里,真的很感:@)
页:
[1]