【问题标题】:Resampling of two data sets of different length in MATLAB在MATLAB中对两个不同长度的数据集进行重采样
【发布时间】:2011-06-27 08:14:30
【问题描述】:

我有两个向量:长度为 927 的传感器 A 和长度为 1250 的传感器 B。我想让它们的长度相同。 MATLAB 中的 resample() 函数在边缘非常嘈杂,我需要至少在整个过程中具有相当好的精度。

我知道重采样可以通过插值来完成,但我如何以最有效的方式实现它。我需要尽可能均匀地将 927 拉伸到 1250。

我想知道我是否可以这样做:

  1. 我需要较短向量中的 333 个新样本。因此,对于每 3 个值,我在其间插入两个连续值的平均值(中点)。 => 插入了 309 个样本
  2. 对于其余部分,我每 38 个样本 (927/(333-309)) 重新插入一次

这有意义吗?我仍然无法获得精确的插值。还有其他我可以使用的功能吗? (除了interp() 因为它需要一个完整的重采样率?)

【问题讨论】:

  • interp1() 对你不起作用有什么原因吗?您可以要求它为任意一组输出点提供插值。 mathworks.com/help/techdoc/ref/interp1.html
  • 如果你给它一个更好的标题,我会给你一个+1,例如“重新采样2个数据集以在Matlab中给出相同的长度”

标签: matlab signal-processing sampling resampling


【解决方案1】:

要进行插值,请使用interp1。出于您的目的,这可能已经足够了,不过,如上所述,重新采样是正确的做法。

【讨论】:

    【解决方案2】:

    对带限信号重新采样与使用无限 Sinc 插值内核进行插值相同,并且非常接近于具有良好选择的窗口的加窗 Sinc 插值。有关详细信息,请参阅此Stanford CCRMA website

    【讨论】:

      【解决方案3】:

      从信号处理的角度来看,您不应该只每 3 个值插入一个样本。那将是不均匀的拉伸,会破坏您的信号。 resample 函数就是你想要的。尝试更改 n 和/或 beta 的参数。您可能需要按照here 的说明填充信号以减少边缘效应。

      【讨论】:

        猜你喜欢
        • 2019-12-30
        • 2015-03-06
        • 2018-10-29
        • 1970-01-01
        • 2013-06-20
        • 2015-07-01
        • 2014-08-13
        • 2020-09-19
        • 2021-11-19
        相关资源
        最近更新 更多