Hilbert 变换与瞬时频率

Hilbert 变换仅可估计单分量信号的瞬时频率。单分量信号在时频平面中用单一“脊”来描述。单分量信号包括单一正弦波信号和 chirp 等信号。

生成以 1 kHz 采样的时长为两秒的 chirp 信号。指定 chirp 信号的最初频率为 100 Hz,一秒后增加到 200 Hz。

fs = 1000;

t = 0:1/fs:2-1/fs;

y = chirp(t,100,1,200);

使用通过 pspectrum 函数实现的短时傅里叶变换来估计 chirp 信号的频谱图。下图中每个时间点有一个峰值频率,很好地描述了这一信号。

pspectrum(y,fs,'spectrogram')

计算解析信号并对相位进行微分以得到瞬时频率。对导数进行缩放以得到有意义的估计。

z = hilbert(y);

instfrq = fs/(2*pi)*diff(unwrap(angle(z)));

clf

plot(t(2:end),instfrq)

ylim([0 fs/2])

instfreq 函数只需一步即可计算并显示瞬时频率。

instfreq(y,fs,'Method','hilbert')

当信号不是单分量时,该方法会失败。

生成频率为 60 Hz 和 90 Hz 的两个正弦波的总和,以 1023 Hz 采样两秒。计算并绘制频谱图。在每个时间点都显示存在两个分量。

fs = 1023;

t = 0:1/fs:2-1/fs;

x = sin(2*pi*60*t)+sin(2*pi*90*t);

pspectrum(x,fs,'spectrogram')

yticks([60 90])

计算分析信号并对其相位求微分。放大包含正弦波频率的区域。分析信号预测瞬时频率,即正弦波频率的平均值。

z = hilbert(x);

instfrq = fs/(2*pi)*diff(unwrap(angle(z)));

plot(t(2:end),instfrq)

ylim([60 90])

xlabel('Time (s)')

ylabel('Frequency (Hz)')

instfreq 函数也估算平均值。

instfreq(x,fs,'Method','hilbert')

要采用时间的函数来估算这两个频率,请使用 spectrogram 求功率频谱密度,使用 tfridge 跟踪两个脊。在 tfridge 中,将更改频率的罚分指定为 0.1。

[s,f,tt] = pspectrum(x,fs,'spectrogram');

numcomp = 2;

[fridge,~,lr] = tfridge(s,f,0.1,'NumRidges',numcomp);

pspectrum(x,fs,'spectrogram')

hold on

plot3(tt,fridge,abs(s(lr)),'LineWidth',4)

hold off

yticks([60 90])

另请参阅

相关主题

瞬时频率函数matlab,Hilbert 变换与瞬时频率相关推荐

  1. 瞬时频率函数matlab,瞬时频率估计的相位建模法及Matlab的实现

    第 3 期 2003 年 5 月 CHINA MEASUREMENT TECHNOLOGY 中国测试技术 No. 3 May ,2003 瞬时频率估计的相位建模法及 Matlab 的实现 冯松立 陈高 ...

  2. matlab输入频率函数,matlab的czt()函数实现频率细化的实例

    fs=256;%采样频率 N=512;%采样点数 nfft=512; n=0:1:N-1;%时间序列号 %n/fs:采样频率下对应的时间序列值 n1=fs*(0:nfft/2-1)/nfft;%F F ...

  3. 离散信号的希尔伯特变换的计算公式_希尔伯特变换和瞬时频率问题--连载(二)...

    写在开始的一段话: PS:OK,上一期关于希尔伯特变换的文章发出后,有知友在评论区说"看到最后--居然这--",哈哈,其实我也挺愧疚大家的,明明一篇知识分享的文章,却写到结尾都没进 ...

  4. matlab求信号的瞬时相位,phrase MATLAB中关于信号瞬时相位 频率的提取的代码,值得学习,很实用 267万源代码下载- www.pudn.com...

    文件名称: phrase下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 2403 KB 上传时间: 2014-05-06 下载次数: 94 提 供 者: 杨 ...

  5. matlab求信号的瞬时相位,phrase MATLAB中关于信号瞬时相位和瞬时频率的提取的代码 - 下载 - 搜珍网...

    瞬时相位.频率参考/2ASK.txt 瞬时相位.频率参考/2psk_feature.m 瞬时相位.频率参考/moulation classification/classification rate s ...

  6. MATLAB hilbert谱 纵坐标由归一化频率改为正常频率的方法

    调用disp_hhs函数绘制hht谱时,这样调用: disp_hhs(E,tt1/fs,[],fs);即把时间除以采样频率,这样时间轴就是真实时间. 把disp_hhs函数里的这一行代码 : imag ...

  7. Hilbert变换求信号的包络线及MATLAB代码

    一.Hilbert变换表达式 Hilbert变换是信号与的卷积,表达式如下: 由于本质是卷积,因此可以从"线性系统","调幅-调频"等角度思考.进一步可参考如下 ...

  8. 解析信号与Matlab hilbert函数

    先摘抄一段: 通常我们用到的信号都是实值信号,但是我们可以根据这个实信号构造出一个复信号,使得这个复信号只包含正频率部分,而且这个复信号的实部正好就是我们原来的实值信号.简单的推导可知,复信号的虚部是 ...

  9. 信号处理——Hilbert变换及谱分析

    原文链接 Hilbert通常用来得到解析信号,基于此原理,Hilbert可以用来对窄带信号进行解包络,并求解信号的瞬时频率,但求解包括的时候会出现端点效应,本文对于这几点分别做了简单的理论探讨. 本文 ...

最新文章

  1. jmeter聚个报告怎么看qps_Jmeter查看QPS和响应时间随着时间的变化曲线
  2. Facebook创建新机器学习系统,用于对视频中的人脸进行“去识别化”
  3. dw网页设计作品_10个富有特色的网页设计精选作品
  4. Python(Windows)下安装各种库的多种方法总结--灵活使用pip
  5. 【填坑】初识钛极小龟NB-IoT物联网开发套件TiKit
  6. 系统监理师备考经验分享
  7. Html.ActionLink
  8. firebug的一个有趣现象
  9. vSphere 6.5 Upgrade Considerations Part-2 (vSphere 6.5升级注意事项第2部分)
  10. 实战matlab之文件与数据接口技术,实战MATLAB之文件与数据接口技术
  11. LVM基础详细说明及动态扩容lvm逻辑卷的操作记录
  12. html怎么写java代码_html中怎么写java代码
  13. InisghtFace 制作自定义数据集和模型训练评估
  14. solidworks二次开发 学习日记--1 开发方式
  15. STM32中GPIO工作原理详解
  16. 即时通讯-Netty篇
  17. 百度地图-创建标注 画线
  18. Google AppSheet: 无需编程构建零代码应用
  19. 通过设置路由器DMZ主机ip,却还是没法通过外网访问
  20. python学习之体验01

热门文章

  1. 攻防世界(解密篇Crypto)---混合编码
  2. 3D游戏角色模型建模| ZBrush制作3D兽人
  3. 【3D游戏模型】在ZBrush中制作3D兽人
  4. Lost in Island
  5. 港联证券|基金和股票的区别是什么?谁更适合做短线?
  6. python三维图能画地图_使用Python绘制地图的三大秘密武器
  7. 验证哥德巴赫猜想(函数专题)
  8. [MTCTF]从出题人视角看ez_cms
  9. Markdown书写软件Typora的使用 -- 渲染(让你的Typora更上档次)
  10. for循环的三种写法