我有两个不同长度的阵列(由于不同的采样率),我需要比较。我想对较大的数组进行下采样以匹配较小的数组,但是该因子不是整数而是小数。
举个例子:
a =
1 1.375 1.75 2.125 2.5 2.875 3.25
b =
1 2 3
有没有办法操纵这些数组来匹配长度?
答案 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