kevin19821 发表于 2007-9-4 10:07

瞬时频率问题

我自己编的求瞬时频率的小程序
fs=1024;
N=256;
dt=1/fs;
t=0:dt:(N-1)*dt;
s=cos(2*pi*12*t);
s1=hilbert(s);
s2=s+i*s1;
fai=angle(s2);
fai=unwrap(fai);
theta=diff(fai)/dt/(2*pi);
plot(theta)
为什么求出的频率不在12HZ呢?
瞬时频率对带有直流量的s=s+c是没有意义的,但是我所取信号为正弦信号为什么画出的图为什么不在12hz呢?

[ 本帖最后由 kevin19821 于 2007-9-4 10:15 编辑 ]

yangzj 发表于 2007-9-4 10:53

把fai=angle(s2);
里的s2改成s1
看看hilbert的帮助说明

kevin19821 发表于 2007-9-4 11:02

知道了, hilbert之后就是解析信号了,谢谢楼上的

zhangnan3509 发表于 2007-9-4 11:06

fs=1024;
N=256;
dt=1/fs;
t=0:dt:(N-1)*dt;
s=cos(2*pi*12*t);
s1=hilbert(s')';
s2=s+i*s1;
figure(1)
subplot(2,1,1)
plot(s1)
subplot(2,1,2)
plot(s2)
theta=instfreq(s1')';
theta=theta.*fs
figure(2)
plot(theta)

[ 本帖最后由 zhangnan3509 于 2007-9-4 11:12 编辑 ]

kevin19821 发表于 2007-9-4 11:19

上面的程序有两个问题不解:
(1)?? Undefined function or variable 'instfreq'.
(2)plot(s2) s2为解析信号,作图时应该取实部

zhangnan3509 发表于 2007-9-4 11:22

回复 #5 kevin19821 的帖子

第一个问题,你没有instfreq函数,咱们版里有这个程序。
第二我想看看你上面作出来的s2到底是什么样子,挺好玩的。

caichengtao 发表于 2007-9-4 12:39

学知识了,感谢!

caichengtao 发表于 2007-9-4 12:45

同时很想知道,解析信号的确切定义!!!任何知识都扣的很细是不是很费时间啊?

zhangnan3509 发表于 2007-9-4 12:52

回复 #8 caichengtao 的帖子

咱们HHT里面的采用hilbert变换,将x(t) 变换成解析形式然后求瞬时频率。当然hilbert变换也不仅仅使用在黄变换中,下面的图片就是在小波中的应用

[ 本帖最后由 zhangnan3509 于 2007-9-4 12:56 编辑 ]

caichengtao 发表于 2007-9-4 13:10

感谢zhangnan3509 !回复及时准确!

kevin19821 发表于 2007-9-4 14:55

回复 #4 zhangnan3509 的帖子

能解释以下为什么在程序里面求HILBERT时取两次共轭呢?

kevin19821 发表于 2007-9-4 15:02

回复 #4 zhangnan3509 的帖子

再次感谢zhangnan3509,我还有两点不明白

为什么在程序里面求HILBERT时取两次转置呢?
s1=hilbert(s')';
theta=instfreq(s1')';
还有:theta=theta.*fs?

[ 本帖最后由 kevin19821 于 2007-9-4 15:10 编辑 ]

zhangnan3509 发表于 2007-9-4 15:28

回复 #12 kevin19821 的帖子

首先我们做一个实验
Xr = ;X = hilbert(Xr')'

X =

   1.0000 - 1.0000i
   2.0000 + 1.0000i
   3.0000 + 1.0000i
   4.0000 - 1.0000i

如果不转置
Xr = ;X = hilbert(Xr)

X =

   1.0000 + 1.0000i
   2.0000 - 1.0000i
   3.0000 - 1.0000i
   4.0000 + 1.0000i
或者分别转置
Xr = ;X = hilbert(Xr)'

X =

   1.0000 - 1.0000i   2.0000 + 1.0000i   3.0000 + 1.0000i   4.0000 - 1.0000i

Xr = ;X = hilbert(Xr')

X =

   1.0000 + 1.0000i   2.0000 - 1.0000i   3.0000 - 1.0000i   4.0000 + 1.0000i

你比较一下 是不是按照双转置的正确,输入列向量,输出列向量。而且计算结果正确。

你说的另外一句 是因为经过了瞬时频率函数的计算,得出的是归一化的结果,如果要得到实际的频率值要乘以采样频率

zhaoyanju 发表于 2008-7-21 17:44

回复 13楼 的帖子

zhangnan3509 真是好人呢

泥鳅123 发表于 2008-9-17 11:34

疑问

为什么s1和theta长度不一样,如何把横轴改为时间?????????
页: [1] 2
查看完整版本: 瞬时频率问题