cupyx.scipy.signal.chirp#
- cupyx.scipy.signal.chirp(t, f0, t1, f1, method='linear', phi=0, vertex_zero=True)[source]#
扫频余弦波发生器。
在下文中,‘Hz’ 应解释为“每单位周期”;这里不要求单位是秒。重要的区别在于旋转的单位是周期,而不是弧度。类似地,t 可以是空间的测量而不是时间的测量。
- 参数:
t (array_like) – 评估波形的时间点。
f0 (float) – 时间 t=0 时的频率(例如,Hz)。
t1 (float) – 指定 f1 的时间点。
f1 (float) – 时间 t1 时波形的频率(例如,Hz)。
method ({'linear', 'quadratic', 'logarithmic', 'hyperbolic'}, optional) – 频率扫描类型。如果未给出,则假定为 linear。更多详情请参阅下面的说明(Notes)。
phi (float, optional) – 相位偏移,单位为度。默认为 0。
vertex_zero (bool, optional) – 此参数仅在 method 为 ‘quadratic’ 时使用。它决定频率图抛物线的顶点是在 t=0 还是 t=t1。
- 返回:
y – 一个 NumPy 数组,包含在 t 时刻根据请求的时变频率评估的信号。更精确地说,函数返回
cos(phase + (pi/180)*phi)
,其中 phase 是2*pi*f(t)
从 0 到 t 的积分。f(t)
在下面定义。- 返回类型:
示例
以下将用于示例中
>>> from cupyx.scipy.signal import chirp, spectrogram >>> import matplotlib.pyplot as plt >>> import cupy as cp
第一个示例,我们将绘制从 6 Hz 到 1 Hz、历时 10 秒的线性啁啾波形
>>> t = cupy.linspace(0, 10, 5001) >>> w = chirp(t, f0=6, f1=1, t1=10, method='linear') >>> plt.plot(cupy.asnumpy(t), cupy.asnumpy(w)) >>> plt.title("Linear Chirp, f(0)=6, f(10)=1") >>> plt.xlabel('t (sec)') >>> plt.show()
对于其余示例,我们将使用更高的频率范围,并使用 cupyx.scipy.signal.spectrogram 演示结果。我们将使用一个采样率为 8000 Hz 的 10 秒时间间隔。
>>> fs = 8000 >>> T = 10 >>> t = cupy.linspace(0, T, T*fs, endpoint=False)
从 1500 Hz 到 250 Hz、历时 10 秒的二次啁啾(频率抛物线曲线的顶点位于 t=0)
>>> w = chirp(t, f0=1500, f1=250, t1=10, method='quadratic') >>> ff, tt, Sxx = spectrogram(w, fs=fs, noverlap=256, nperseg=512, ... nfft=2048) >>> plt.pcolormesh(cupy.asnumpy(tt), cupy.asnumpy(ff[:513]), cupy.asnumpy(Sxx[:513]), cmap='gray_r') >>> plt.title('Quadratic Chirp, f(0)=1500, f(10)=250') >>> plt.xlabel('t (sec)') >>> plt.ylabel('Frequency (Hz)') >>> plt.grid() >>> plt.show()