如何求2个进行过希尔伯特包络进行互相关的程序
哪位高手能够指点下,如何求2个进行过希尔伯特包络进行互相关的程序麻烦高手了!~~~ 本帖最后由 wdhd 于 2016-9-6 14:45 编辑
原帖由 qichengzhi 于 2007-6-11 20:41 发表
如何求2个进行过希尔伯特包络进行互相关的程序
麻烦楼主把问题叙述清楚些,以便大家给你提供帮助! 我做的是声门脉冲的时间延时
在对2个声门脉冲信号进行了希尔伯特变换,程序如下:
M=length(sh);
sp=zeros(1,M);
err=zeros(1,M);
Nt=10;
= 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;
= 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个信号的希尔伯特后的互相关
回复 #3 qichengzhi 的帖子
关于自相关和互相关 请参考:http://forum.vibunion.com/forum/thread-36108-1-6.html
同时希望发帖之前能够充分利用论坛的搜索功能,看看类似的问题有没有被人已经提出过。
页:
[1]