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


Python cusignal.filtering.resample.resample_poly用法及代碼示例

用法:

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 乘以原始采樣率。在濾波步驟期間,超出信號邊界的值被假定為零。

參數

xarray_like

要重新采樣的數據。

upint

上采樣因子。

downint

下采樣因子。

axis整數,可選

重新采樣的x 的軸。默認值為 0。

window字符串、元組或類似數組,可選

用於設計low-pass 濾波器或要采用的 FIR 濾波器係數的所需窗口。詳情見下文。

gpupath布爾型,可選

濾波器設計的可選路徑。如果過濾器尺寸很小,gpupath == False 可能是可取的。

返回

resampled_x數組

重新采樣的數組。

注意

當樣本數量很大且為素數時,或者當樣本數量很大且updown 共享較大的最大公分母時,這種多相方法可能會比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_windowcusignal.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()

相關用法


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