瞬时频率问题
我自己编的求瞬时频率的小程序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 编辑 ] 把fai=angle(s2);
里的s2改成s1
看看hilbert的帮助说明 知道了, hilbert之后就是解析信号了,谢谢楼上的 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 编辑 ] 上面的程序有两个问题不解:
(1)?? Undefined function or variable 'instfreq'.
(2)plot(s2) s2为解析信号,作图时应该取实部
回复 #5 kevin19821 的帖子
第一个问题,你没有instfreq函数,咱们版里有这个程序。第二我想看看你上面作出来的s2到底是什么样子,挺好玩的。 学知识了,感谢! 同时很想知道,解析信号的确切定义!!!任何知识都扣的很细是不是很费时间啊?
回复 #8 caichengtao 的帖子
咱们HHT里面的采用hilbert变换,将x(t) 变换成解析形式然后求瞬时频率。当然hilbert变换也不仅仅使用在黄变换中,下面的图片就是在小波中的应用[ 本帖最后由 zhangnan3509 于 2007-9-4 12:56 编辑 ] 感谢zhangnan3509 !回复及时准确!
回复 #4 zhangnan3509 的帖子
能解释以下为什么在程序里面求HILBERT时取两次共轭呢?回复 #4 zhangnan3509 的帖子
再次感谢zhangnan3509,我还有两点不明白为什么在程序里面求HILBERT时取两次转置呢?
s1=hilbert(s')';
theta=instfreq(s1')';
还有:theta=theta.*fs?
[ 本帖最后由 kevin19821 于 2007-9-4 15:10 编辑 ]
回复 #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
你比较一下 是不是按照双转置的正确,输入列向量,输出列向量。而且计算结果正确。
你说的另外一句 是因为经过了瞬时频率函数的计算,得出的是归一化的结果,如果要得到实际的频率值要乘以采样频率
回复 13楼 的帖子
zhangnan3509 真是好人呢疑问
为什么s1和theta长度不一样,如何把横轴改为时间?????????
页:
[1]
2