scipy.signal.
sweep_poly#
- scipy.signal.sweep_poly(t, poly, phi=0)[源代码]#
频率扫描余弦发生器,具有随时间变化的频率。
此函数生成一个正弦函数,其瞬时频率随时间变化。时间 t 时的频率由多项式 poly 给出。
- 参数:
- tndarray
计算波形的时刻。
- poly类数组的 1-D 数组或 numpy.poly1d 的实例
期望的频率表示为多项式。如果 poly 是长度为 n 的列表或 ndarray,则 poly 的元素是多项式的系数,瞬时频率为
f(t) = poly[0]*t**(n-1) + poly[1]*t**(n-2) + ... + poly[n-1]
如果 poly 是 numpy.poly1d 的实例,则瞬时频率为
f(t) = poly(t)
- phifloat, 可选
相位偏移,以度为单位,默认值:0。
- 返回:
- sweep_polyndarray
一个 numpy 数组,包含在 t 处计算的具有请求的时变频率的信号。更准确地说,该函数返回
cos(phase + (pi/180)*phi)
,其中 phase 是2 * pi * f(t)
从 0 到 t 的积分;f(t)
定义如上。
另请参阅
备注
在 0.8.0 版本中添加。
如果 poly 是长度为 n 的列表或 ndarray,则 poly 的元素是多项式的系数,瞬时频率为
f(t) = poly[0]*t**(n-1) + poly[1]*t**(n-2) + ... + poly[n-1]
如果 poly 是
numpy.poly1d
的实例,则瞬时频率为f(t) = poly(t)
最后,输出 s 为
cos(phase + (pi/180)*phi)
其中 phase 是
2 * pi * f(t)
从 0 到 t 的积分,f(t)
定义如上。示例
计算瞬时频率为
f(t) = 0.025*t**3 - 0.36*t**2 + 1.25*t + 2
在 0 <= t <= 10 区间内的波形。
>>> import numpy as np >>> from scipy.signal import sweep_poly >>> p = np.poly1d([0.025, -0.36, 1.25, 2.0]) >>> t = np.linspace(0, 10, 5001) >>> w = sweep_poly(t, p)
绘制它
>>> import matplotlib.pyplot as plt >>> plt.subplot(2, 1, 1) >>> plt.plot(t, w) >>> plt.title("Sweep Poly\nwith frequency " + ... "$f(t) = 0.025t^3 - 0.36t^2 + 1.25t + 2$") >>> plt.subplot(2, 1, 2) >>> plt.plot(t, p(t), 'r', label='f(t)') >>> plt.legend() >>> plt.xlabel('t') >>> plt.tight_layout() >>> plt.show()