MATLAB:比较 2 个不同长度的数组

MATLAB: Comparing 2 arrays with different lengths

我有两个长度不同的数组(由于不同的采样率)需要比较。我想对较大的数组进行下采样以匹配长度较小的数组,但是该因子不是整数而是小数。

举个例子:

a =
     1     1.375     1.75     2.125     2.5     2.875     3.25

b =
     1     2     3

有什么方法可以操纵这些数组来匹配长度吗?

巧妙地使用 interp1 很容易做到这一点。诀窍是用于插值的关键点是一个数组,从 1 到 a 中的值,我们称之为 N,并且插值的关键点将是一个线性增加的数组,其中第一个点是 1,最后一个点是 N 并且您将这个范围平均划分为具有与 b.

中一样多的点

简单地说:

anew = interp1(1:numel(a), a, linspace(1, N, numel(b)));

linspace 生成一个从 1 到 N = numel(a) 的线性递增数组,其中的点数是你想要的,我们将其确定为 b 中的元素总数。这精确地指定了您想要为您提供与 b 的长度相匹配的下采样版本 a 的正确关键点,尽管需要进行一些插值。默认的插值方法是线性的。

使用您提供的 a 的示例输入,我们得到:

>> anew

anew =

    1.0000    2.1250    3.2500