来自以下载体:
depth = [0:0.1:20];
我怎样才能创建一个与'depth'具有相同数据的新向量,但每0.5采用一个值,结果如下:
d2 = depth(1:5:end);
由于我的数据实际上并没有间隔0.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
。