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

时间:2016-07-29 17:13:11

标签: arrays matlab size match sampling

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

举个例子:

a =
     1     1.375     1.75     2.125     2.5     2.875     3.25

b =
     1     2     3

有没有办法操纵这些数组来匹配长度?

1 个答案:

答案 0 :(得分:2)

聪明地使用interp1很容易做到。诀窍在于,用于插值的关键点是一个数组,从1到a中的数值,我们称之为N,插值关键点将是一个线性增加的数组,其中第一个点是1,最后一个点是N,你平均分割这个范围,以得到与b中一样多的点数。

简单地说:

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

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

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

>> anew

anew =

    1.0000    2.1250    3.2500