声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 8587|回复: 20

[HHT] 关于instfreq函数

[复制链接]
发表于 2007-4-20 11:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我做了一个简单的例子
T=10;N=1024;n=0:1:N-1;dt=T/N;t=n*dt;
x=cos(2*pi*t);x=hilbert(x);[fnor,t]=instfreq(x');
plot(t,fnor);
得出来的fnor=0.4902,而这个信号的频率应该是1呀,谁知道为什么吗?谢谢
回复
分享到:

使用道具 举报

发表于 2007-4-20 11:39 | 显示全部楼层
原帖由 tangaoming 于 2007-4-20 11:03 发表
我做了一个简单的例子
T=10;N=1024;n=0:1:N-1;dt=T/N;t=n*dt;
x=cos(2*pi*t);x=hilbert(x);[fnor,t]=instfreq(x');
plot(t,fnor);
得出来的fnor=0.4902,而这个信号的频率应该是1呀,谁知道为什么吗?谢谢


这个问题与 instfreq 中的 angle 函数有关,迟点我再看看
 楼主| 发表于 2007-4-21 15:05 | 显示全部楼层
呵呵,希望楼主能尽快给我看看,我刚接触这个,还不是很懂,谢谢
 楼主| 发表于 2007-4-22 09:20 | 显示全部楼层
eight,你怎么不管呢?能给我解释一下怎么从归一化频率去得到实际频率?谢谢
发表于 2007-4-22 10:11 | 显示全部楼层
原帖由 tangaoming 于 2007-4-22 09:20 发表
eight,你怎么不管呢?能给我解释一下怎么从归一化频率去得到实际频率?谢谢


不是人人都有责任帮助别人,也不是人人都这么有空去帮助别人。我的事情多得一塌糊涂,所以,请耐心等待,或者自己解决,建议你去matlab版看看置顶贴:聚宝盆
发表于 2007-4-22 11:15 | 显示全部楼层

回复 #1 tangaoming 的帖子

你这样改一下就对了:
x=hilbert(x');[fnor,t]=instfreq(x);

你原来的做法是错误的
这样再乘以采样频率就可以得到真实的频率
 楼主| 发表于 2007-4-22 14:27 | 显示全部楼层
呵呵,十分感谢
发表于 2007-4-23 22:41 | 显示全部楼层

消除误差后的正确代码为:

T=10;
N=1024;
n=0:1:N-1;
dt=T/N;
t=n*dt;
x=sin(0.8*pi*t);

x=hilbert(x');
[fnor,t]=instfreq(x);
fnor1=fnor/0.976553*100;
fnor1(1,1)
plot(t,fnor1);
发表于 2007-4-24 11:29 | 显示全部楼层
原来如此,受益匪浅!
楼主若将[fnor,t]=instfreq(x');变为[fnor,t]=instfreq(x.');也能得到正确答案。
在下尚有一事不明,望高人指点:
(1)为何fnor再乘以采样频率就可以得到真实的频率?
(2)利用instfreq函数的算法fnormhat=0.5*(angle(-x(t+1).*conj(x(t-1)))+pi)/(2*pi);中,
0.5*(angle(-x(t+1).*conj(x(t-1)))+pi)是用中心差分计算 arg x(t)的微分吗?
发表于 2007-4-27 00:10 | 显示全部楼层

疑问

Undefined command/function 'instfreq'各位打扰了,我是第一次接触HHT,把理论已经看完,正准备编程阶段,我执行了上面的程序,出现这种情况怎么办啊?也想问问大家,我该怎样去编程?看有关matlab书?什么样的书能把你们编写的程序看明白?
 楼主| 发表于 2007-4-27 08:32 | 显示全部楼层
我还有两点不明:1,hilbert变换既可以是行向量也可以是列向量,为什么非要x'才能hilbert变换
2,就是x.'和x'有什么区别,谢谢
发表于 2007-4-27 11:21 | 显示全部楼层
因为x是复数,x'为复共轭转置,x.'为非共轭转置。

评分

1

查看全部评分

 楼主| 发表于 2007-4-27 12:47 | 显示全部楼层
哦,明白了,原来如此
发表于 2007-5-4 16:28 | 显示全部楼层
原算法是利用前后各一点来求中间一点的频率,用的是一阶差分方法了
发表于 2007-5-5 11:54 | 显示全部楼层
原算法是利用前后各一点来求中间一点的频率,用的是一阶差分方法了

能否解释一下0.5*(angle(-x(t+1).*conj(x(t-1)))+pi)的意义或提供参考文献?我一直没有搞懂为何x(t+1)前有负号,且+pi。重庆大学谭善文的博士论文中提到了离散瞬时频率的计算,但形式与上式有一些不同。还请高人指教。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 02:42 , Processed in 0.072546 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表