假设我有一个信号,它是一维 numpy 数组,持续一秒,采样率等于 16 kHz。如何将该数组重新采样到 1024 Hz,而不丢失有关该信号中存在的“峰值”的信息,如下所示?我只补充说“峰值”之间的间隔不少于 40 毫秒。
更新
我发现了一种基于 scipy.signal.resample 函数的有趣方法,但该函数的问题是它返回每个 y 值的绝对值给定向量。
最佳答案
如果你会使用scipy
,我建议scipy.interpolate.interp1d
.
但是 numpy
在 numpy.interp
中也有一维插值,所以这可能正是您想要的。
对于你所问的问题(不失去峰值),这是一个有点不适的问题,无法通过简单而幼稚的插值来解决。
我的 2 美分解决方案:由于您正在进行下采样,并且您知道下采样比率,因此您可以延长峰值,以便在下采样后不会丢失它们,即,以便下采样中的峰值持续时间信号是至少一个样本,即在下采样之前至少是ceil(SR1/SR2)
个样本,其中SR1
是原始样本率,SR2
是下采样率..
关于python - 如何更改 numpy.array 采样率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30895093/