qichengzhi 发表于 2007-6-11 20:41

如何求2个进行过希尔伯特包络进行互相关的程序

哪位高手能够指点下,如何求2个进行过希尔伯特包络进行互相关的程序
麻烦高手了!~~~

zhlong 发表于 2007-6-11 20:44

本帖最后由 wdhd 于 2016-9-6 14:45 编辑

原帖由 qichengzhi 于 2007-6-11 20:41 发表
如何求2个进行过希尔伯特包络进行互相关的程序
麻烦楼主把问题叙述清楚些,以便大家给你提供帮助!

qichengzhi 发表于 2007-6-11 21:03

我做的是声门脉冲的时间延时
在对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个信号的希尔伯特后的互相关

zhlong 发表于 2007-6-11 21:11

回复 #3 qichengzhi 的帖子

关于自相关和互相关 请参考:
http://forum.vibunion.com/forum/thread-36108-1-6.html

同时希望发帖之前能够充分利用论坛的搜索功能,看看类似的问题有没有被人已经提出过。
页: [1]
查看完整版本: 如何求2个进行过希尔伯特包络进行互相关的程序