关于啁啾信号的基本问题

信息处理 fft Python 线性啁啾
2022-02-01 08:03:38

假设我使用以下 python 代码生成啁啾信号:

 t = np.linspace(0, 10, 512)
 f0 = 2
 f1 = 5
 fs = 2*f1
 w = chirp(t, f0=f0, f1=f1, t1=10, method='linear')
 result  = rfft(w)
 phase = np.zeros(257)
 mag = np.zeros(257)
 for binnum in range(len(result)):
   mag[binnum] = abs(result[binnum])
   phase[binnum] = np.arctan2(result[binnum].imag, result[binnum].real)
 plt.plot(fs * np.linspace(0, 0.5, 257),np.unwrap(phase))
 plt.show()
 plt.plot(fs * np.linspace(0, 0.5, 257),mag)
 plt.show()  

相图是:在此处输入图像描述

幅度图是: 在此处输入图像描述

但它与这里描述的有很大不同

好吧,看看相位图,我可以看到从 0 到 0.8 的抛物线。幅度绝对不是一个常数。

我做错了什么或误解了什么?

提前致谢。

1个回答

我不明白您提供的链接中啁啾的定义(也许是频域中的啁啾?),但也许以下解释会有所帮助。

给出的具有可变频率的线性啁啾

f(t)=α+βt
x1(t)=e2πj(αt+0.5βt2)

在那种情况下,时域中的信号的相位确实是抛物线的,并且幅度是恒定的并且等于 1。 现在,我对 python 不熟悉,但是matlab 中的函数会产生一个真实的信号而不是复杂的。在这种情况下,你会得到不同的结果。但是,您可以使用希尔伯特变换(我猜这是在 python 中),假设使用.x1(t)
chirp

x2(t)=sin(2π(αt+0.5βt2))
x1(t)x2(t)fft