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()