python - 如何更改 numpy.array 采样率?

标签 python arrays numpy

假设我有一个信号,它是一维 numpy 数组,持续一秒,采样率等于 16 kHz。如何将该数组重新采样到 1024 Hz,而不丢失有关该信号中存在的“峰值”的信息,如下所示?我只补充说“峰值”之间的间隔不少于 40 毫秒。

更新

我发现了一种基于 scipy.signal.resample 函数的有趣方法,但该函数的问题是它返回每个 y 值的绝对值给定向量。

enter image description here

最佳答案

如果你会使用scipy,我建议scipy.interpolate.interp1d .

但是 numpynumpy.interp 中也有一维插值,所以这可能正是您想要的。

对于你所问的问题(不失去峰值),这是一个有点不适的问题,无法通过简单而幼稚的插值来解决。

我的 2 美分解决方案:由于您正在进行下采样,并且您知道下采样比率,因此您可以延长峰值,以便在下采样后不会丢失它们,即,以便下采样中的峰值持续时间信号是至少一个样本,即在下采样之前至少是ceil(SR1/SR2)个样本,其中SR1是原始样本率,SR2 是下采样率..

关于python - 如何更改 numpy.array 采样率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30895093/

相关文章:

python itertools : Using cycle with islice

python - 在 Python 中使用正则表达式匹配多种可能性

python - Google Python gdata 库安装失败

python - 如何将二维数组转换为 python 3 中的元组?

Python:输入问题

java - 无需迭代即可将 List<Integer> 转换为 int[] ( array ) 的有效方法

python - 使用多个解析创建 Scrapy 项目数组

python - 将数组轴滚动不同维度的量(概括跨步索引滚动)

python - 查找 numpy ndarray 的特定值

python - 在 numpy 中转换为数组时列表元素的违反直觉的截断?