當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy signal.ZoomFFT用法及代碼示例


本文簡要介紹 python 語言中 scipy.signal.ZoomFFT 的用法。

用法:

class  scipy.signal.ZoomFFT(n, fn, m=None, *, fs=2, endpoint=False)#

創建一個可調用的縮放 FFT 變換函數。

這是對單位圓周圍一組等距頻率的線性調頻脈衝 z-transform ( CZT ) 的特化,用於比計算整個 FFT 和截斷更有效地計算 FFT 的一部分。

參數

n int

信號的大小。

fn array_like

給出頻率範圍的長度為 2 的序列 [f1, f2] 或標量,假定範圍為 [0, fn]。

m 整數,可選

要評估的點數。默認值為 n。

fs 浮點數,可選

采樣頻率。如果fs=10例如,表示 10 kHz,則f1f2也將以 kHz 為單位。默認采樣頻率為 2,因此f1f2應在 [0, 1] 範圍內,以保持變換低於奈奎斯特頻率。

endpoint 布爾型,可選

如果為 True,則 f2 是最後一個樣本。否則,不包括在內。默認為假。

返回

f ZoomFFT

可調用對象f(x, axis=-1)用於計算縮放 FFTx.

注意

選擇默認值使得 f(x, 2) 等效於 fft.fft(x) ,如果 m > len(x) ,則 f(x, 2, m) 等效於 fft.fft(x, m)

采樣頻率為 1/dt,即信號 x 中樣本之間的時間步長。單位圓對應於從 0 到采樣頻率的頻率。默認采樣頻率為 2 表示 f1、f2 值直至奈奎斯特頻率都在 [0, 1) 範圍內。對於以弧度表示的 f1、f2 值,應使用 2*pi 的采樣頻率。

請記住,縮放 FFT 隻能對現有 FFT 的點進行插值。它無法幫助解決兩個獨立的附近頻率。頻率分辨率隻能通過增加采集時間來提高。

這些函數是使用 Bluestein 的算法實現的(如 scipy.fft )。 [2]

參考

[1]

Steve Alan Shilling,“啁啾 z-transform 及其應用的研究”,第 29 頁(1970 年)https://krex.k-state.edu/dspace/bitstream/handle/2097/7844/LD2668R41972S43.pdf

[2]

Leo I. Bluestein,“離散傅立葉變換計算的線性濾波方法”,東北電子研究與工程會議記錄 10, 218-219 (1968)。

例子

要繪製轉換結果,請使用以下內容:

>>> import numpy as np
>>> from scipy.signal import ZoomFFT
>>> t = np.linspace(0, 1, 1021)
>>> x = np.cos(2*np.pi*15*t) + np.sin(2*np.pi*17*t)
>>> f1, f2 = 5, 27
>>> transform = ZoomFFT(len(x), [f1, f2], len(x), fs=1021)
>>> X = transform(x)
>>> f = np.linspace(f1, f2, len(x))
>>> import matplotlib.pyplot as plt
>>> plt.plot(f, 20*np.log10(np.abs(X)))
>>> plt.show()
scipy-signal-ZoomFFT-1.png

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.signal.ZoomFFT。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。