从以下向量:
depth = [0:0.1:20];
我如何创建一个具有与“深度”相同的数据但每 0.5 取一个值的新向量,提供以下结果:
d2 = depth(1:5:end);
由于我的数据实际上不是以 0.1 的间隔间隔而是随机间隔的,所以我不能应用上面显示的简单方法。实现这一目标的最佳方法是什么?
如果你想在数组中找到最接近线性间隔网格的点,你可以这样做:
% some example data
A = zeros(40,1);
for ii = 2:numel(A); A(ii)=A(ii-1)+rand; end
% your linear grid
Linds = A(1) : 0.5 : A(end);
% nearest indices
[~,inds] = min( abs(bsxfun(@minus, A, Linds)) );
请注意,其中的条目inds
可能会重复。否则,如果您想在向量中进行插值,则需要interp1
. 从文档中:
YI = INTERP1(X,Y,XI) 进行插值以找到 YI,即数组 XI 中点处的基础函数 Y 的值。X 必须是长度为 N 的向量。
请注意,可以使用多个不同的插值内核,例如 、'linear'
等'spline'
。有关help interp1
更多信息,请咨询。