关于 hilbert谱公式的疑惑
看到这个公式,我总认为有点疑惑啊,当一个实信号或者是单个imf的信号x,求的其解析信号,然后再取实部,岂不是又等于x了?
是不是我哪里看错了?求帮忙点醒一下我。谢谢。
再者,我看了论坛里面的资料,帖子,发现讨论HHT的很多,有没有专门分析HT谱的用法,或者包络谱,或者会边际谱。http://forum.vibunion.com/forum.php?mod=viewthread&tid=107393这个帖子的内容 也希望有人能回答一下。欢迎讨论。
补充内容 (2012-12-2 15:54):
问题描述的有点罗嗦,请看5楼整理过的表达。谢谢 调用Matlab的Hilbert命令的话,返回的是复数信号。这里需要说明一下Matlab中Hilbert变换的实现:首先对实数信号做FFT变换,去除负频率部分,相位移动pi/2,接着做IFFT(FFT变换的逆变换)得到负部分,叠加实部完成Hilbert变换。那这样的过程来看,你想的是对的! yghit08 发表于 2012-11-30 11:28 static/image/common/back.gif
调用Matlab的Hilbert命令的话,返回的是复数信号。这里需要说明一下Matlab中Hilbert变换的实现:首先对实数 ...
我查看了hhspectrum文档的代码:
for i=1:Nmodes
an(i,:)=hilbert(x(i,:)')';
f(i,:)=instfreq(an(i,:)',tt,l)';
A=abs(an(:,l+1:end-l));
if aff
disprog(i,Nmodes,max(Nmodes,100))
end
end
我看到里面的所求的A应该是幅值,但是它采用的是绝对值,也就是相当于极坐标的幅值(实部与虚部平方和再开方),我感觉这个和上面的公式(取实部RE有点不同)。 总结一下就是,我觉得代码里面取得是复数极坐标形式下的幅值,公式里面取得 复数的实部,不知道哪里对?还是我理解的问题 migicmika 发表于 2012-12-2 10:34 static/image/common/back.gif
我查看了hhspectrum文档的代码:
for i=1:Nmodes
原来你是问这个内容。
这样解释:
(cos(x))^2+(sin(x))^2=1;
这样解释可能是比较含糊,但是我想你想一下就明白为什么取abs函数了。
还是要思考,不要一遇到问题首先看看能不能找人给回答一下!
祝好! 本帖最后由 migicmika 于 2012-12-2 15:57 编辑
yghit08 发表于 2012-12-2 13:17 http://forum.chinavib.com/static/image/common/back.gif
原来你是问这个内容。
这样解释:
(cos(x))^2+(sin(x))^2=1;
呵呵,十分感谢你耐心的回答。
有可能是我钻了牛角尖,也有可能是我的问题描述的不清楚。您上面的回答,我还是没有理解,我找了师弟之类的帮我分析了还是没有理解。但是十分感谢。
我试图从另一角度来重新描述一下我的问题。
我看了网上的emd程序,其中有个hhspectrum 函数和toimage函数用来画时频图,我取了重要的步骤总结一下:
1.求瞬时频率(insfreq这个函数)搞定,不属于我探讨的范围。
2.求瞬时幅值:x经过hilbert 变成解析信号z,然后求z的abs(幅值)。(这是我从程序中总结的,求确认)。
3.求时间
4 然后通过求的时间,瞬时频率,和瞬时幅值在toimage 中画出 时频图,我想知道这个时频图是不是 称作 Hilbert谱
以上是代码中看到的。
下面是公式中的疑惑:
这个公式书中称为 Hilbert谱,如果参照这个公式写程序的话,应该求的是 x经过hilbert 变换得到解析信号z,然后z求实部,real(z)。
代码和公式都表现的是时频图,但是abs(z)和real(z)很明显不同吧,哪个才是Hibert谱?谢谢。
migicmika 发表于 2012-12-2 15:48 static/image/common/back.gif
呵呵,十分感谢你耐心的回答。
有可能是我钻了牛角尖,也有可能是我的问题描述的不清楚。您上面的回答 ...
四个问题,第一个不用回答。
第二个:对。比如你采集到的信号时A*cos(t),那么接下来你做Hilbert变换得到A*cos(t)-i*A*sin(t)(注意:i是虚数单位),接着你想提取振幅A,那么是不是应该用abs这个命令呢?也许你没有看abs这个命令的说明,针对复数abs做的是sqrt((A*cost)^2+(A*sin(t))^2),不知写的这么明白了你是否还会不理解?
第三个问题:这不是问题。在论坛里有相关的解释,在我回答的帖子里也有说明。一般,如果你在引用EMD这一套处理程序的时候没有加入时间变量,那么默认的就是采样频率是1,时间间隔也对应是1,那么转换到实际的时间上来的时候只需要除以你实际的采样频率即可,也就是hhspectrum函数给出的时间变量除以采样频率即可。
第四个问题:公式没给错,是你自己没理解。结合第二个问题的解释应该不会出现误解了。toimage以及disp_hhs只是将你hhspectrum处理IMFs得到的结果做成时频图(其实是三维图,因为颜色的深浅也代表一维)。所以你说的“这个时频图是不是称作Hilbert谱”,我不敢肯定。如果你是完整的运行程序下来的,那我可以肯定的说:是。
最后总结:看的书少,想的太少!
本帖最后由 migicmika 于 2012-12-2 19:30 编辑
yghit08 发表于 2012-12-2 19:12 http://forum.chinavib.com/static/image/common/back.gif
四个问题,第一个不用回答。
第二个:对。比如你采集到的信号时A*cos(t),那么接下来你做Hilbert变换得到 ...
我都有点不好意思了,您的态度太认真了。我感激并且有点心虚了。
我也不知道怎么讲了,还是我的表达的问题吧。
其实emd的哪些程序我都看了,也下了论文看到原作了,包括求瞬时频率的,里面的代码也都懂,abs啊这些我自然我也知道。还是,先感谢一下您的耐心回答。耽误您时间真的很不好意思。
其实上面几层我想问的就是一句话:按公式幅值是real(z)计算的, 下载的代码幅值是abs(z)计算的,哪个对?还是我理解问题。这才是我想表达的。额。。不知道我这次说清了没。
我对您十分抱歉并感激。 下载的代码幅值是abs(z) yghit08 发表于 2012-12-2 19:58 static/image/common/back.gif
下载的代码幅值是abs(z)
是的,这点我看了代码了,但是书中和论文里面都是 RE(实部),不知道这个怎么理解 migicmika 发表于 2012-12-2 20:01 static/image/common/back.gif
是的,这点我看了代码了,但是书中和论文里面都是 RE(实部),不知道这个怎么理解
书可能出错,另外从你敲进来的公式的描述看你说的书中的公式没错!
yghit08 发表于 2012-12-3 10:11 static/image/common/back.gif
书可能出错,另外从你敲进来的公式的描述看你说的书中的公式没错!
谢谢你, 太感谢了。我这个问题先放下,我看了Huang的表达了,没有RE部分,不知道为什么国内的资料都有,“都有”是因为我看的凡是提到的都有RE的写法。再次感谢。 migicmika 发表于 2012-12-2 15:48 static/image/common/back.gif
呵呵,十分感谢你耐心的回答。
有可能是我钻了牛角尖,也有可能是我的问题描述的不清楚。您上面的回答 ...
使用matlab里的hilbert命令时,求得的结果是输入信号x的解析信号Z。Z的实部就是输入信号x,而虚部就是按课本上定义的输入信号x的Hilbert变换。
hilbertDiscrete-time analytic signal via Hilbert transform.
X = hilbert(Xr) computes the so-called discrete-time analytic signal
页:
[1]