用法:
cusignal.filtering.resample.resample_poly(x, up, down, axis=0, window=('kaiser', 5.0), gpupath=True)
使用多相濾波沿給定軸重新采樣
x
。信號
x
上采樣係數up
,應用 zero-phase low-pass FIR 濾波器,然後下采樣係數down
。結果采樣率是up / down
乘以原始采樣率。在濾波步驟期間,超出信號邊界的值被假定為零。- x:array_like
要重新采樣的數據。
- up:int
上采樣因子。
- down:int
下采樣因子。
- axis:整數,可選
重新采樣的
x
的軸。默認值為 0。- window:字符串、元組或類似數組,可選
用於設計low-pass 濾波器或要采用的 FIR 濾波器係數的所需窗口。詳情見下文。
- gpupath:布爾型,可選
濾波器設計的可選路徑。如果過濾器尺寸很小,gpupath == False 可能是可取的。
- resampled_x:數組
重新采樣的數組。
參數:
返回:
注意:
當樣本數量很大且為素數時,或者當樣本數量很大且
up
和down
共享較大的最大公分母時,這種多相方法可能會比cusignal.resample
中的傅立葉方法更快。使用的 FIR 濾波器的長度將取決於max(up, down) // gcd(up, down)
,多相濾波期間的操作數將取決於濾波器長度和down
(詳見cusignal.upfirdn
)。參數
window
指定 FIR low-pass 濾波器設計。如果
window
是數組,則假定它是FIR 濾波器係數。請注意,FIR 濾波器是在上采樣步驟之後應用的,因此應將其設計為以比原始采樣頻率高up//gcd(up, down)
的因子對信號進行操作。此函數的輸出將相對於此數組居中,因此如果通常需要 zero-phase 過濾器,則最好通過具有奇數個樣本的對稱過濾器。對於任何其他類型的
window
,調用函數cusignal.get_window
和cusignal.firwin
以生成適當的濾波器係數。返回向量的第一個樣本與輸入向量的第一個樣本相同。樣本之間的間距從
dx
更改為dx * down / float(up)
。例子:
請注意,對於 FFT 方法,重采樣數據的末尾會上升以滿足下一個周期的第一個樣本,而對於多相方法,則接近於零:
>>> import cusignal >>> import cupy as cp
>>> x = cp.linspace(0, 10, 20, endpoint=False) >>> y = cp.cos(-x**2/6.0) >>> f_fft = cusignal.resample(y, 100) >>> f_poly = cusignal.resample_poly(y, 100, 20) >>> xnew = cp.linspace(0, 10, 100, endpoint=False)
>>> import matplotlib.pyplot as plt >>> plt.plot(cp.asnumpy(xnew), cp.asnumpy(f_fft), 'b.-', cp.asnumpy(xnew), cp.asnumpy(f_poly), 'r.-') >>> plt.plot(cp.asnumpy(x), cp.asnumpy(y), 'ko-') >>> plt.plot(10, cp.asnumpy(y[0]), 'bo', 10, 0., 'ro') # boundaries >>> plt.legend(['resample', 'resamp_poly', 'data'], loc='best') >>> plt.show()
相關用法
- Python cusignal.filtering.resample.resample用法及代碼示例
- Python cusignal.filter_design.fir_filter_design.cmplx_sort用法及代碼示例
- Python cusignal.filter_design.fir_filter_design.firwin用法及代碼示例
- Python cusignal.windows.windows.hann用法及代碼示例
- Python cusignal.windows.windows.general_gaussian用法及代碼示例
- Python cusignal.waveforms.waveforms.chirp用法及代碼示例
- Python cusignal.windows.windows.gaussian用法及代碼示例
- Python cusignal.windows.windows.hamming用法及代碼示例
- Python cusignal.windows.windows.get_window用法及代碼示例
- Python cusignal.waveforms.waveforms.gausspulse用法及代碼示例
- Python cusignal.peak_finding.peak_finding.argrelmin用法及代碼示例
- Python cusignal.windows.windows.bartlett用法及代碼示例
- Python cusignal.spectral_analysis.spectral.welch用法及代碼示例
- Python cusignal.windows.windows.chebwin用法及代碼示例
- Python cusignal.windows.windows.general_cosine用法及代碼示例
- Python cusignal.peak_finding.peak_finding.argrelextrema用法及代碼示例
- Python cusignal.convolution.convolve.convolve2d用法及代碼示例
- Python cusignal.convolution.correlate.correlate用法及代碼示例
- Python cusignal.convolution.convolve.fftconvolve用法及代碼示例
- Python cusignal.waveforms.waveforms.unit_impulse用法及代碼示例
注:本文由純淨天空篩選整理自rapids.ai大神的英文原創作品 cusignal.filtering.resample.resample_poly。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。