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


Python SciPy signal.resample用法及代码示例


本文简要介绍 python 语言中 scipy.signal.resample 的用法。

用法:

scipy.signal.resample(x, num, t=None, axis=0, window=None, domain='time')#

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

重新采样的信号以相同的值开始x但采样间距为len(x) / num * (spacing of x).因为使用了傅里叶方法,所以假设信号是周期性的。

参数

x array_like

要重新采样的数据。

num int

重采样信号中的样本数。

t 数组,可选

如果给定 t,则假定它是与 x 中的信号数据相关联的等距采样位置。

axis 整数,可选

重新采样的 x 轴。默认值为 0。

window 数组,可调用,字符串,浮点数或元组,可选

指定应用于傅里叶域中的信号的窗口。详情见下文。

domain 字符串,可选

指示输入域的字符串xtime考虑输入x作为time-domain(默认),freq考虑输入x作为frequency-domain。

返回

resampled_x 或 (resampled_x, resampled_t)

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

注意

参数窗口控制 Fourier-domain 窗口,该窗口在补零之前使傅里叶频谱逐渐变细,以减轻您不打算解释为 band-limited 的采样信号的重采样值中的振铃。

如果 window 是一个函数,则使用指示频率区间的输入向量(即 fftfreq(x.shape[axis]) )调用它。

如果 window 是与 x.shape[axis] 长度相同的数组,则假定它是直接应用于傅里叶域的窗口(首先使用 dc 和 low-frequency)。

对于任何其他类型的窗户, 函数scipy.signal.get_window被调用来生成窗口。

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

如果 t 不是 None,那么它仅用于计算重采样位置 resampled_t

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

例子

请注意,重采样数据的末尾上升以满足下一个周期的第一个样本:

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

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.signal.resample。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。