当前位置:网站首页>Hilbert 变换与瞬时频率
Hilbert 变换与瞬时频率
2022-07-28 23:53:00 【jk_101】
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])如图所示:

边栏推荐
- Copu Professor Lu Shouqun was invited to give a keynote speech at the open atom global open source summit
- 将行内元素转换为块元素的方法
- SQL server only has database files and no log files. The solution to the 1813 error in restoring data times
- 散列表 ~
- day8
- B站“崩溃”始末 2021.07.13 我们是这样崩的(转载)
- 【commons-lang3专题】004- NumberUtils 专题
- system verilog常用语法
- Cookie和Session
- 一元函数积分学之1__不定积分
猜你喜欢

What opportunities does the London gold real-time market bring?

Method of converting inline elements to block elements

可视化全链路日志追踪

AQS principle

进程和线程知识点总结 2

Deep learning | matlab implementation of TCN time convolution neural network spatialdropoutlayer parameter description

如何在WordPress中创建一个自定义404错误页面

【Web开发】Flask框架基础知识

Cookie和Session

时序预测 | MATLAB实现TCN时间卷积神经网络的时间序列预测
随机推荐
将行内元素转换为块元素的方法
DRF - deserialization of serializer, fields and parameters, local and global hooks, use of modelserializer
B+ tree~
Mathematical modeling and detailed explanation of basic knowledge (common knowledge points of Chemistry)
【AD学习】本次海上航行器大赛画pcb图的历程
Huawei releases harmonyos 3.0, taking another step towards "Internet of all things"
双链表的定义 ~
[unity] configure unity edit C as vscode
小程序毕设作品之微信校园浴室预约小程序毕业设计成品(7)中期检查报告
Educational Codeforces Round 132 (Rated for Div. 2)【A~C】
从零开始实现lmax-Disruptor队列(六)Disruptor 解决伪共享、消费者优雅停止实现原理解析
追踪伦敦银实时行情的方法有哪些?
【commons-lang3专题】002- RandomUtils 专题
进程和线程知识点总结 2
“index [hotel/jXLK5MTYTU-jO9WzJNob4w] already exists“
Interview shock 69: is TCP reliable? Why?
What opportunities does the London gold real-time market bring?
消费行业数字化升级成“刚需”,weiit新零售SaaS为企业赋能!
[Commons lang3 topic] 003- randomstringutils topic
【刷题笔记】二进制链表转整数