scipy 如何使用带抽取策略的浮点降采样因子对时间序列数据进行降采样

sdnqo3pr  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(182)

我有2个传感器正在收集时间序列数据,我试图调整。

sensorOneData = np.random.rand(50)

sensorTwoData = np.random.rand(180)

传感器1的采样速率为50 Hz,传感器2的采样速率为180 Hz。
据推测,为了使2号传感器的数据与1号传感器的数据一致,我需要以3.6的系数进行缩减采样
通常我会使用scipy.signal.decimate(sensorTwoData,downSampleFactor),尽管抽取仅支持整数降采样因子。
我尝试过scipy.signal.resample(sensorTwoData, sensorOneData.shape[0])作为替代方法,但结果并不完全正确,因为它没有应用抗混叠滤波器。
在使用浮点数下采样因子进行下采样时,是否有其他方法可以生成所需的已处理数据?

envsm3lx

envsm3lx1#

您可以使用resampy

import resampy
import numpy as np
import matplotlib.pyplot as plt

# after resampling one frequency should be gone

signal = np.sin(2*np.pi*150*np.linspace(0, 1, 1000)) \
        + np.sin(2*np.pi*50*np.linspace(0, 1, 1000))
resampled_signal = resampy.resample(signal, 1000, 200)

plt.figure()
plt.plot(np.linspace(0, 499, 500), np.abs(np.fft.fft(signal))[:500])

# below scaling to have same energy in spectrum

plt.plot(np.linspace(0, 99, 100), np.abs(np.fft.fft(resampled_signal))[:100] * 1000/200, 'r--')
plt.legend(['before resampling', 'after resampling'])
plt.show()

相关问题