scipy.signal.
sweep_poly#
- scipy.signal.sweep_poly(t, poly, phi=0)[原始碼]#
頻率掃描餘弦波產生器,具有隨時間變化的頻率。
此函數產生一個正弦函數,其瞬時頻率隨時間變化。時間 t 的頻率由多項式 poly 給定。
- 參數:
- tndarray
評估波形的時點。
- poly一維類陣列或 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()