我有两个长度不同的数组(由于采样率不同)需要比较。我想对较大的数组进行下采样以匹配较小的数组的长度,但是该因子不是整数而是小数。
举个例子:
a =
1 1.375 1.75 2.125 2.5 2.875 3.25
b =
1 2 3
有什么方法可以操作这些数组以匹配长度吗?
巧妙地使用这很容易做到interp1 http://www.mathworks.com/help/matlab/ref/interp1.html。诀窍在于,用于插值的关键点是一个从 1 到尽可能多的值的数组a
我们称之为N
,插值的关键点将是一个线性递增的数组,其中第一个点是 1,最后一个点是N
然后你平均划分这个范围以获得尽可能多的点b
.
简单的说:
anew = interp1(1:numel(a), a, linspace(1, N, numel(b)));
linspace http://www.mathworks.com/help/matlab/ref/linspace.html生成一个从 1 到 线性递增的数组N = numel(a)
任意多的点,我们将其确定为中的元素总数b
。这准确地指定了您想要为您提供下采样版本的正确关键点a
匹配的长度b
,尽管需要一些插值。默认插值方法是线性的。
使用来自的样本输入a
您提供了,我们得到:
>> anew
anew =
1.0000 2.1250 3.2500
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)