日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python知识: scipy signal.chirp用法例

發布時間:2025/3/21 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python知识: scipy signal.chirp用法例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、說明

scipy signal.chirp是產生波形的函數,可以虛擬出聲音波形。與Wave配合可以實現虛擬音響。

二、函數用法?

scipy.signal.chirp(t, f0, t1, f1, method='linear', phi=0, vertex_zero=True)

Frequency-swept余弦發生器。

在下文中,‘Hz’應解釋為“每單位循環數”;此處不要求單位為一秒。重要的區別是旋轉單位是周期,而不是弧度。同樣,t可以表示空間而不是時間。

參數:

tarray_like

評估波形的時間。

f0float

在時間t = 0處的頻率(例如Hz)。

t1float

指定f1的時間。

f1float

在時間t1處的波形頻率(例如Hz)。

method{‘linear’, ‘quadratic’, ‘logarithmic’, ‘hyperbolic’}, 可選參數

頻率掃描的種類。如果未給出,則假定為線性。有關更多詳細信息,請參見下面的注釋。

phifloat, 可選參數

相位偏移,以度為單位。默認值為0。

vertex_zerobool, 可選參數

僅當方法為‘quadratic’時才使用此參數。它確定拋物線的頂點(即頻率的圖表)是在t = 0還是在t = t1。

返回值:

yndarray

包含在t處以請求的time-varying頻率評估的信號的numpy數組。更準確地說,函數返回cos(phase?+?(pi/180)*phi)其中相是整數(從0到t的)2*pi*f(t)。f(t)在下面定義。

注意:

該方法有四個選項。以下公式給出了由chirp()生成的信號的瞬時頻率(以Hz為單位)。為了方便起見,也可以使用下面顯示的簡稱。

1)線性簡稱:linear, lin, li:

f(t)?=?f0?+?(f1?-?f0)?*?t?/?t1

2) 拋物線形:quadratic, quad, q:

頻率f(t)的曲線是一條通過(0,f0)和(t1,f1)的拋物線。默認情況下,拋物線的頂點位于(0,f0)。如果vertex_zero為False,則頂點位于(t1,f1)。公式是:

if vertex_zero is True:

f(t)?=?f0?+?(f1?-?f0)?*?t**2?/?t1**2

else:

f(t)?=?f1?-?(f1?-?f0)?*?(t1?-?t)**2?/?t1**2

To use a more general quadratic function, or an arbitrary polynomial, use the function?scipy.signal.sweep_poly.

3 )對數形 logarithmic, log, lo:

f(t)?=?f0?*?(f1/f0)**(t/t1)

f0 and f1 must be nonzero and have the same sign.

This signal is also known as a geometric or exponential chirp.

4)雙曲形hyperbolic, hyp:

f(t)?=?f0*f1*t1?/?((f0?-?f1)*t?+?f1*t1)

f0 and f1 must be nonzero.

三、例子?

示例中將使用以下內容:

>>> from scipy.signal import chirp, spectrogram >>> import matplotlib.pyplot as plt

對于第一個示例,我們將繪制10秒內從6 Hz到1 Hz的線性chi的波形:

>>> t = np.linspace(0, 10, 5001) >>> w = chirp(t, f0=6, f1=1, t1=10, method='linear') >>> plt.plot(t, w) >>> plt.title("Linear Chirp, f(0)=6, f(10)=1") >>> plt.xlabel('t (sec)') >>> plt.show()

對于其余示例,我們將使用更高的頻率范圍,并使用scipy.signal.spectrogram。我們將以8000 Hz的頻率采樣10秒。

fs = 8000 T = 10 t = np.linspace(0, T, T*fs, endpoint=False)

在10秒內從1500 Hz到250 Hz的二次chi(頻率的拋物線曲線的頂點在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(tt, ff[:513], 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()

在10秒內從1500 Hz到250 Hz的二次chi(頻率的拋物線曲線的頂點在t = 10處):

>>> w = chirp(t, f0=1500, f1=250, t1=10, method='quadratic', ... vertex_zero=False) >>> ff, tt, Sxx = spectrogram(w, fs=fs, noverlap=256, nperseg=512, ... nfft=2048) >>> plt.pcolormesh(tt, ff[:513], Sxx[:513], cmap='gray_r') >>> plt.title('Quadratic Chirp, f(0)=1500, f(10)=250\n' + ... '(vertex_zero=False)') >>> plt.xlabel('t (sec)') >>> plt.ylabel('Frequency (Hz)') >>> plt.grid() >>> plt.show()

在10秒內從1500 Hz到250 Hz的對數chi:

>>> w = chirp(t, f0=1500, f1=250, t1=10, method='logarithmic') >>> ff, tt, Sxx = spectrogram(w, fs=fs, noverlap=256, nperseg=512, ... nfft=2048) >>> plt.pcolormesh(tt, ff[:513], Sxx[:513], cmap='gray_r') >>> plt.title('Logarithmic Chirp, f(0)=1500, f(10)=250') >>> plt.xlabel('t (sec)') >>> plt.ylabel('Frequency (Hz)') >>> plt.grid() >>> plt.show()

在10秒內從1500 Hz到250 Hz的雙曲chi:

>>> w = chirp(t, f0=1500, f1=250, t1=10, method='hyperbolic') >>> ff, tt, Sxx = spectrogram(w, fs=fs, noverlap=256, nperseg=512, ... nfft=2048) >>> plt.pcolormesh(tt, ff[:513], Sxx[:513], cmap='gray_r') >>> plt.title('Hyperbolic Chirp, f(0)=1500, f(10)=250') >>> plt.xlabel('t (sec)') >>> plt.ylabel('Frequency (Hz)') >>> plt.grid() >>> plt.show()

源碼:

scipy.signal.chirp的API實現見:[源代碼]

總結

以上是生活随笔為你收集整理的Python知识: scipy signal.chirp用法例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。