python - python - 如何降采样保持信号的尖峰?

我正在分析以200Hz采样68秒的信号,最重要的部分是尖峰,最大持续1秒,以地震为例。

我必须将信号降采样2倍,我尝试过:


from scipy import signal



signal.decimate(mysignal, 2, ftype="fir")


signal.resample_poly(mysignal, 1, 2)



两个函数的结果相同: 信号被重新采样,但是尖峰,正极和负极被减少。

我函数写错了还是必须传递一个自定义FIR过滤器?

时间:

你可以在硬件支持的情况下以最高可能的频率进行采样,但是仅在达到最小幅度差异或时间差异时保存点,这样,你的实际数据点将在任一标准上进行过滤,当信号没有真正变化时,你拥有想要的采样率和峰值也仍然注册。

假设数据包含采样点,采样速率恒定,在此算法的末尾,保存的列表将包含你数据的所有重要timestamp,sample_point条目:


DIVIDER = 5


THRESHOLD = 1000



saved = [ [0, data[0]] ]



for i in range(1, len(data)):


 if( (i % DIVIDER == 0) || (abs(data[i] - data[i - 1]) > THRESHOLD) ):


 saved.append([ i, data[i] ])



不用看两个采样点之间的幅度差,你还可以把上面或下面的数据点保存起来。

...