scipy.signal.

sweep_poly#

scipy.signal.sweep_poly(t, poly, phi=0)[source]#

扫频余弦生成器,具有时变频率。

此函数生成正弦函数,其瞬时频率随时间而变化。时间 t 处的频率由多项式 poly 给出。

参数:
tndarray

用于计算波形的次数。

poly1-D array_like 或 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)

phifloat,可选

相位偏差(以度为单位)默认值:0。

返回:
sweep_polyndarray

一个numpy数组,其中包含在t下经评估的信号,采用请求的时间变化频率。更确切地说,函数返回cos(phase + (pi/180)*phi),其中phase是从0到t的积分2 * pi * f(t)f(t)在上面定义。

另请参见

chirp

注释

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是从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的区间上。

>>> 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()
../../_images/scipy-signal-sweep_poly-1.png