scipy.signal.sweep_poly¶
- scipy.signal.sweep_poly(t, poly, phi=0)[源代码]¶
扫频余弦发生器,频率随时间变化。
此函数生成瞬时频率随时间变化的正弦函数。时间的频率 t 由多项式给出 poly 。
- 参数
- tndarray
评估波形的时间。
- poly一维array_like或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)
- phi浮动,可选
相位偏移(以度为单位),默认值:0。
- 退货
- sweep_polyndarray
一个Numpy数组,该数组包含在 t 具有所请求的时变频率。更准确地说,该函数返回
cos(phase + (pi/180)*phi)
,在哪里 phase 是的整数(从0到t)2 * pi * f(t)
;f(t)
是上面定义的。
参见
注意事项
0.8.0 新版功能.
如果 poly 是长度的列表或ndarray n 的元素,则 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 是从0到 t 的
2 * pi * f(t)
,f(t)
如上所述。示例
使用瞬时频率计算波形::
f(t) = 0.025*t**3 - 0.36*t**2 + 1.25*t + 2
在间隔0≤t≤10上。
>>> 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()