当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。