1

从以下向量:

depth = [0:0.1:20];

我如何创建一个具有与“深度”相同的数据但每 0.5 取一个值的新向量,提供以下结果:

d2 = depth(1:5:end);

由于我的数据实际上不是以 0.1 的间隔间隔而是随机间隔的,所以我不能应用上面显示的简单方法。实现这一目标的最佳方法是什么?

4

1 回答 1

3

如果你想在数组中找到最接近线性间隔网格的点,你可以这样做:

% 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更多信息,请咨询。

于 2012-11-06T11:04:12.953 回答