Python 中的瞬时频率可以通过计算信号的瞬时相位差来得到。具体方法是对信号进行希尔伯特变换,然后计算每个时间点的瞬时相位。瞬时频率可以通过计算相邻时间点的瞬时相位差并除以时间间隔得到。以下是一个示例代码:

import numpy as np
from scipy.signal import hilbert

# 生成一个信号
t = np.linspace(0, 1, 1000)
f = 10  # 信号频率
x = np.sin(2 * np.pi * f * t)

# 对信号进行希尔伯特变换
hx = hilbert(x)

# 计算瞬时相位
phase = np.angle(hx)

# 计算瞬时频率
instant_freq = np.diff(phase) / np.diff(t)

# 绘制信号和瞬时频率
import matplotlib.pyplot as plt

fig, ax = plt.subplots(2, 1, sharex=True)
ax[0].plot(t, x)
ax[0].set_ylabel('Signal')
ax[1].plot(t[:-1], instant_freq)
ax[1].set_ylabel('Instantaneous frequency')
ax[1].set_xlabel('Time (s)')
plt.show()

运行代码后,会生成一个包含信号和瞬时频率的图形。可以看到,瞬时频率在整个信号周期内保持恒定,与信号频率相同。

Python 瞬时频率计算:希尔伯特变换方法

原文地址: https://www.cveoy.top/t/topic/jz9R 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录