MATLAB中对两个不同长度的数据集进行重新采样

7
我有两个向量:长度为927的sensorA和长度为1250的sensorB。我想使它们的长度相同。在MATLAB中,resample()函数在边缘处非常嘈杂,我需要至少合理的精度。
我知道可以通过插值来进行重采样,但我该如何以最有效的方式实现呢?我需要尽可能均匀地将927拉伸到1250。
我想知道是否可以这样做:
1. 我需要在较短的向量中新增333个样本。因此,对于每3个值,我在它们之间插入两个连续值的平均值(中点)。=>插入309个样本 2. 对于剩余的部分,我再次插入每38个样本(927 /(333-309))
这样做有意义吗?我仍然不能得到精确的插值。是否有其他函数可以使用?(除了interp()因为它需要一个积分重采样率?)

您无法使用interp1()的原因是什么?您可以要求它提供任意一组输出点的插值。http://www.mathworks.com/help/techdoc/ref/interp1.html - Colin K
将两个数据集重新采样以在Matlab中具有相同的长度 - mor22
3个回答

6
从信号处理的角度来看,你不应该仅仅在每三个值之间插入一个样本。这会导致非均匀的拉伸并破坏你的信号。你需要使用resample函数。尝试更改n和/或beta的参数。你可能需要像这里描述的那样填充你的信号以减少边缘效应。

0
重新采样带限信号等同于使用无限Sinc插值核进行插值,而且与选择良好的窗口的窗口化Sinc插值非常接近。有关详细信息,请参见斯坦福大学CCRMA网站

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接