我正在分析以200Hz采样6-8秒的信号,最重要的部分是尖峰,最大持续1秒。例如考虑地震...
我必须将信号下采样2倍。我尝试过:
from scipy import signal
signal.decimate(mysignal, 2, ftype="fir")
signal.resample_poly(mysignal, 1, 2)
我在两个功能上都得到了相同的结果:信号被重新采样,但是正负信号的尖峰减小了。
我错了功能,还是必须通过自定义FIR滤波器?
如果硬件支持,您可以以最高可能的频率进行采样,但是仅在达到最小幅度差异或时间差异时保存点。这样,您的实际数据点将在任一标准上进行过滤。当信号中什么都没有改变时,您便拥有了所需的采样率,并且峰值也仍然记录下来。
假设data以恒定的采样率包含您的数据:
DIVIDER = 5
THRESHOLD = 1000
i = 1
saved = []
while(i < len(data)):
if( (i % DIVIDER == 0) || (abs(data[i] - data[i - 1]) > THRESHOLD):
saved.append(data[i)
i = i + 1