cupyx.scipy.signal.resample#

cupyx.scipy.signal.resample(x, num, t=None, axis=0, window=None, domain='time')[源代码][源代码]#

使用傅里叶方法沿着给定的轴将 x 重采样到 num 个样本。

重采样信号从与 x 相同的值开始,但以 len(x) / num * (x 的间距) 的间距进行采样。由于使用了傅里叶方法,因此假定信号是周期性的。

参数:
  • x (array_like) – 要重采样的数据。

  • num (int) – 重采样信号中的样本数量。

  • t (array_like, optional) – 如果给出了 t,则假定它是与 x 中的信号数据相关联的样本位置。

  • axis (int, optional) – 被重采样的 x 轴。默认是 0。

  • window (array_like, callable, string, float, or tuple, optional) – 指定应用于傅里叶域中信号的窗口。详情见下文。

  • domain (string, optional) – 指示输入 x 的域的字符串: time 将输入 x 视为时域。(默认) freq 将输入 x 视为频域。

返回:

重采样后的数组,或者,如果给出了 t,则包含重采样数组和相应重采样位置的元组。

返回类型:

resampled_x or (resampled_x, resampled_t)

参见

decimate

在应用FIR或IIR滤波器后对信号进行下采样。

resample_poly

使用多相滤波和FIR滤波器进行重采样。

备注

参数 window 控制一个傅里叶域窗口,该窗口在零填充之前对傅里叶谱进行调整,以减轻重采样值中的振铃现象,这些重采样值来自您不希望被解释为带限的采样信号。

如果 window 是一个函数,那么它会用一个表示频率箱的输入向量调用(即 fftfreq(x.shape[axis]) )。

如果 window 是一个与 x.shape[axis] 长度相同的数组,则假定它是在傅里叶域中直接应用的窗口(首先为直流和低频)。

对于任何其他类型的 window,将调用函数 cusignal.get_window 来生成窗口。

返回向量的第一个样本与输入向量的第一个样本相同。样本之间的间距从 dx 变为 dx * len(x) / num

如果 t 不是 None,那么它表示旧的样本位置,新的样本位置以及新的样本将会被返回。

如前所述,resample 使用 FFT 变换,如果输入或输出样本的数量很大且为素数,这可能会非常慢;请参阅 scipy.fftpack.fft

示例

注意,重采样数据的末尾上升以与下一个周期的第一个样本相接:

>>> import cupy as cp
>>> import cupyx.scipy.signal import resample
>>> x = cupy.linspace(0, 10, 20, endpoint=False)
>>> y = cupy.cos(-x**2/6.0)
>>> f = resample(y, 100)
>>> xnew = cupy.linspace(0, 10, 100, endpoint=False)
>>> import matplotlib.pyplot as plt
>>> plt.plot(cupy.asnumpy(x), cupy.asnumpy(y), 'go-', cupy.asnumpy(xnew),                 cupy.asnumpy(f), '.-', 10, cupy.asnumpy(y[0]), 'ro')
>>> plt.legend(['data', 'resampled'], loc='best')
>>> plt.show()