声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1360|回复: 3

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

[复制链接]
发表于 2008-4-9 21:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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


Arc=angle(y)/pi;


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



[ 本帖最后由 tjucruiser 于 2008-4-9 21:55 编辑 ]
回复
分享到:

使用道具 举报

发表于 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*[0:N-1])

楼主试下上面的代码看看!
 楼主| 发表于 2008-4-10 08:42 | 显示全部楼层

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

我想对两端心电信号分别求出瞬时相位,而后看他们之间是否存在相位差锁定关系,请问我是不是分别对两段心电直接做Hilbert,而后求相位差就行了?
1、我上面说得那个问题的,求出的相位差90度会不会影响心电信号相位差的结果?
2、是不是对整段数据做hilbert变换就行,还是需要加窗口逐段处理?
请您指点,多谢了
发表于 2008-4-10 09:38 | 显示全部楼层
1.90度不会影响相位差;
2.应该是不能直接hilbert变换求相位,就如一个信号一般也不能直接求瞬时频率,而应该将信号分解为单分量信号,对每个分量求瞬时频率才有物理意义,EMD的目的正是为了得到单分量信号。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-26 18:32 , Processed in 0.067200 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表