从向量中提取给定值的倍数

时间:2012-11-06 10:58:15

标签: matlab vector

来自以下载体:

depth = [0:0.1:20];

我怎样才能创建一个与'depth'具有相同数据的新向量,但每0.5采用一个值,结果如下:

d2 = depth(1:5:end);

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

1 个答案:

答案 0 :(得分: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