-

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
import numpy as np

# 生成信号数据
n = 1000  # 采样点数
t = np.linspace(0, 1, n)  # 时间轴
f = 5  # 信号频率
signal = np.sin(2 * np.pi * f * t)  # 信号数据

# 进行离散傅里叶变换
dft = np.fft.fft(signal)

# 计算频率轴
freqs = np.fft.fftfreq(n, t[1] - t[0])

# 找到信号的频段
max_freq_index = np.argmax(np.abs(dft))  # 找到 DFT 中幅度最大的值
freq = freqs[max_freq_index]  # 找到对应的频率
freq_band = np.abs(freq * n)  # 将频率转换为频段

# 打印结果
print(f"信号的频段为 {freq_band:.2f}")

先生成一个包含正弦波信号的一维数组 signal

然后使用 NumPy 的 fft 函数计算信号的 DFT,并使用 fftfreq 函数计算相应的频率轴。

接着找到 DFT 中幅度最大的值,并找到对应的频率。

最后将频率转换为频段并打印结果。

posted on 2023-02-23 14:11  p_xcn  阅读(64)  评论(0)    收藏  举报