我需要比较两个长度不同的数组(由于采样率不同)。我想对较大的数组进行下采样以匹配较小的数组的长度,但是该因子不是整数而是小数。
举个例子:
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
关于arrays - MATLAB:比较两个不同长度的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38664184/