tjucruiser 发表于 2008-4-9 21:34

初学Hilbert,请教求信号相位的问题?

:@o :'(
先给一下代码:
clear all;
N=25;
f=1/16;
x=sin(2*pi*f*);
y=hilbert(x);


Arc=angle(y)/pi;


结果如下Arc(1)=-0.5 Arc(9)=0.5 Arc(13)=1
请问信号x=sin(2*pi*f*);在位置1,9,13的相位应该是什么值,我总觉得括号中的值就是相位,请高手指点啊?



[ 本帖最后由 tjucruiser 于 2008-4-9 21:55 编辑 ]

zhlong 发表于 2008-4-10 01:15

sin(x)的hilbert变换是 -cos(x),如果把sin括号内的x当成是相位的话,那么当x=0时,sin(x)=0,-cos(x)=-1。
利用angle函数求相角时是利用下式进行求解的 ang=atan(-cos(x)/sin(x)),所以x=0时求出的ang相角时-90度,所以angle函数求出的角度应该加上90度才是sin括号内的相角。

Arc=(unwrap(angle(y))+pi/2)/pi/2;
plot(Arc)
hold on
plot(f*)

楼主试下上面的代码看看!

tjucruiser 发表于 2008-4-10 08:42

非常感谢您的回答,还有个问题请教,实际是我的最终目标

我想对两端心电信号分别求出瞬时相位,而后看他们之间是否存在相位差锁定关系,请问我是不是分别对两段心电直接做Hilbert,而后求相位差就行了?
1、我上面说得那个问题的,求出的相位差90度会不会影响心电信号相位差的结果?
2、是不是对整段数据做hilbert变换就行,还是需要加窗口逐段处理?
请您指点,多谢了

zhlong 发表于 2008-4-10 09:38

1.90度不会影响相位差;
2.应该是不能直接hilbert变换求相位,就如一个信号一般也不能直接求瞬时频率,而应该将信号分解为单分量信号,对每个分量求瞬时频率才有物理意义,EMD的目的正是为了得到单分量信号。
页: [1]
查看完整版本: 初学Hilbert,请教求信号相位的问题?