Matlab最近邻插值结果

时间:2018-10-10 01:37:02

标签: matlab interpolation

vq = interp1(v, xq, 'nearest', 0)

我希望最近的邻居插值类似于round(xq)并获得v中的值。例如:

v = [1 0];
xq =  0.4 : 0.2 : 2
xq =
     0.4   0.6   0.8   1.0   1.2   1.4   1.6   1.8   2.0

round(xq)
ans =
     0     1     1     1     1     1     2     2     2

vq = interp1(v, round(xq), '', 0) % get ones for round(xq) == 1
vq =
     0     1     1     1     1     1     0     0     0

我希望“最近”的行为与上述round类似。但是,

vq = interp1(v, xq, 'nearest', 0)
vq =
     0     0     0     1     1     1     0     0     0

这既不是round(xq),也不是floor,也不是ceil。我想念什么?

1 个答案:

答案 0 :(得分:2)

问题在于您的前三个点(0.4、0.6、0.8)不在域([1、2])之内。因此,interp1使用了您设置为零的“ extrapval”。

尝试:

vq = interp1(v, xq, ‘nearest’, ‘extrap’)

尽管对于所有x <1,它都将返回1,但不确定是否正是您想要的。