|
楼主 |
发表于 2007-6-11 21:03
|
显示全部楼层
我做的是 声门脉冲的时间延时
在对2个声门脉冲信号进行了希尔伯特变换,程序如下:
M=length(sh);
sp=zeros(1,M);
err=zeros(1,M);
Nt=10;
[A,E] = lpc(sh,Nt) ;
for n=2:Nt
for t=2:n
sp(n)=sp(n)-A(t)*sh(n-t+1);
end
err(n)=sh(n)-sp(n);
end
for n=Nt+1:M
for t=2:Nt+1
sp(n)=sp(n)-A(t)*sh(n-t+1);
end
err(n)=sh(n)-sp(n);
end
%希尔伯特包络
errh=hilbert(err);
for n=1:M
erh(n)=imag(errh(n))^2;
er(n)=err(n)^2;
error(n)=sqrt((er(n)+erh(n)));
end
for n=1:M
B=max(error(n));
end
for n=1:M
if error(n)>=B*0.5
error(n)=1;
else error(n)=0;
end
phil(LF,:)=error;
%%%%%%%对第一个麦克风的信号帧进行处理求希尔伯特包络 %%%%%%%%%%%%%%%%%%%%
M1=length(sh1);
spt1=zeros(1,M1);
errt1=zeros(1,M1);
Nt1=10;
[At1,Et1] = lpc(sh1,Nt1) ;
for n=2:Nt1
for t=2:n
spt1(n)=spt1(n)-At1(t)*sh1(n-t+1);
end
errt1(n)=sh1(n)-spt1(n);
end
for n=Nt1+1:M1
for t=2:Nt1+1
spt1(n)=spt1(n)-At1(t)*sh1(n-t+1);
end
errt1(n)=sh1(n)-spt1(n);
end
errht1=hilbert(errt1);
for n=1:M1
erht1(n)=imag(errht1(n))^2;
ert1(n)=errt1(n)^2;
errort1(n)=sqrt((ert1(n)+erht1(n)));
end
for n=1:M
B=max(errort1(n));
end
for n=1:M
if errort1(n)>=B*0.5
errort1(n)=1;
else errort1(n)=0;
end
phil1(LF,:)=errort1;
后面就是要求这2个信号的希尔伯特后的互相关 |
|