nacred 发表于 2007-11-2 21:53

hilbert变换的问题

以下是我写的一段计算相位的程序
a1=1:100;
a2=99:-1:1;
x1=
b1=1:0.1:10;
b2=9.9:-0.1:1;
x2=
y=hilbert(x1);
y1=hilbert(x2);
z=angle(y);
%z=unwrap(z);
z1=angle(y1);
%z1=unwrap(z1);
subplot(2,1,1),plot(z,'.')
subplot(2,1,2),plot(z1,'.')
做出图相位的极值是不是应该在中间?分别是2和100处。另外 unwrap在这好像没什么用。。。相位的范围应该是-pi/2~pi/2这和图中又不符。是不是我哪里想错了,请高手解答!

eight 发表于 2007-11-2 22:07

本帖最后由 wdhd 于 2016-9-8 14:03 编辑

原帖由 nacred 于 2007-11-2 21:53 发表
以下是我写的一段计算相位的程序
a1=1:100;
a2=99:-1:1;
x1=
b1=1:0.1:10;
b2=9.9:-0.1:1;
x2=
y=hilbert(x1);
y1=hilbert(x2);
z=angle(y);
%z=unwrap(z);
z1=angle(y1);
%z1=unwrap(z1);
...
依稀记得之前版面讨论过,请搜索一下

zhlong 发表于 2007-11-2 22:45

回复 #1 nacred 的帖子

你怎么知道他们分别在2和100处相位达到极值的?

nacred 发表于 2007-11-3 20:20

不好意思,只是感觉上的说:@L

nacred 发表于 2007-11-3 20:57

请问有没有关于相位方面的文章?
hilbert变换如何计算单点的相位?
谢谢了

zhlong 发表于 2007-11-3 21:01

回复 #5 nacred 的帖子

单点相位是什么意思?

nacred 发表于 2007-11-3 21:03

不是。。我是想问hilbert对离散数据点是如何进行变换的。好像与点数目有关

zhlong 发表于 2007-11-3 21:20

回复 #7 nacred 的帖子

help hilbert看看就知道这个函数是怎么回事了。与点数无关吧。
参考http://forum.vibunion.com/forum/viewthread.php?tid=47303

相位就是求得信号的解析形式后,求虚部除以实部的反正切!

nacred 发表于 2007-11-3 21:29

a=
a=hilbert(a);
结果是a=1.0000 + 0.5774i   2.0000 - 1.1547i   3.0000 + 0.5774i
b=1:0.5:3
b=hilbert(b);
结果是 b=1.0000 + 0.8507i   1.5000 - 0.6882i   2.0000 - 0.3249i   2.5000 - 0.6882i   3.0000 + 0.8507i
好像与点数有关
相位就是求的信号的解析形式后,求虚部除以实部的反正切!那么值域好像是-pi/2~pi/2,而不是-pi~pi

zhlong 发表于 2007-11-3 21:47

回复 #9 nacred 的帖子

a和b不是长度问题,而是这两个根本不是同一个序列。
t=1:500;
>> x=sin(2*pi*0.05*t);
>> t1=1:300;
>> x1=sin(2*pi*0.05*t1);
>> xh=hilbert(x);
>> xh1=hilbert(x1);
>> plot(imag(xh))
>> hold
>> plot(imag(xh1))
例子中x和x1只是长度不同,你可以比较一下它们的hilbert变换。

反正切如果用函数atan求的话是在-pi/2~pi/2,如果用atan2的话就在-pi~pi之间了。

nacred 发表于 2007-11-5 19:15

谢谢了:@)
页: [1]
查看完整版本: hilbert变换的问题