Python使用scipy.signal.chirp生成正弦扫频信号异常求助
正弦扫频信号生成异常问题
我使用Python的scipy.signal.chirp生成正弦扫频信号,但结果不符合预期,调整多种频率参数后仍存在异常。代码如下:
from scipy.signal import chirp import numpy as np import matplotlib.pyplot as plt t = np.linspace(0, 320e-9, 1601); x = chirp(t, 2.5e9, 320e-9, 4.5e9, method='linear', phi=-90)
生成的信号波形异常,效果如下:
问题原因
核心问题是采样率不足导致混叠。根据奈奎斯特采样定理,采样率必须至少是信号最高频率的2倍才能避免混叠。你的扫频最高频率是4.5GHz,因此采样率至少需要9GHz,但当前代码的采样率仅为:(1601-1)/320e-9 = 5e9 Hz(5GHz),远低于要求的9GHz,所以波形出现严重畸变。
解决办法
提升采样率至满足奈奎斯特准则,修改后的代码示例:
from scipy.signal import chirp import numpy as np import matplotlib.pyplot as plt # 设置采样率为9GHz(满足2*4.5GHz的要求) Fs = 9e9 t_duration = 320e-9 # 生成时间序列,确保采样点覆盖整个时长 t = np.linspace(0, t_duration, int(Fs * t_duration) + 1) # 生成线性扫频信号 x = chirp(t, 2.5e9, t_duration, 4.5e9, method='linear', phi=-90) # 绘图验证 plt.plot(t*1e9, x) plt.xlabel('时间(ns)') plt.ylabel('幅度') plt.title('正常线性正弦扫频信号') plt.show()
也可以用np.arange生成时间序列,避免浮点精度误差:
t = np.arange(0, t_duration + 1/Fs, 1/Fs)
这样生成的信号就不会出现混叠导致的异常波形。
内容的提问来源于stack exchange,提问作者Reza Afra
相关产品推荐
相关产品推荐

