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这和图中又不符。是不是我哪里想错了,请高手解答! 本帖最后由 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);
...
依稀记得之前版面讨论过,请搜索一下
回复 #1 nacred 的帖子
你怎么知道他们分别在2和100处相位达到极值的? 不好意思,只是感觉上的说:@L 请问有没有关于相位方面的文章?hilbert变换如何计算单点的相位?
谢谢了
回复 #5 nacred 的帖子
单点相位是什么意思? 不是。。我是想问hilbert对离散数据点是如何进行变换的。好像与点数目有关回复 #7 nacred 的帖子
help hilbert看看就知道这个函数是怎么回事了。与点数无关吧。参考http://forum.vibunion.com/forum/viewthread.php?tid=47303
相位就是求得信号的解析形式后,求虚部除以实部的反正切! 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
回复 #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之间了。 谢谢了:@)
页:
[1]