matlab最近邻插值结果
matlab nearest neighbor interpolation result
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
我预计 'nearest' 与上述 round
类似。然而,
vq = interp1(v, xq, 'nearest', 0)
vq =
0 0 0 1 1 1 0 0 0
这既不是round
(xq),也不是floor
,也不是ceil
。我错过了什么?
问题是您的前三个点 (0.4, 0.6, 0.8) 超出了域(即 [1, 2])。所以 interp1 使用你设置为零的‘extrapval’。
尝试:
vq = interp1(v, xq, ‘nearest’, ‘extrap’)
尽管对于所有 x < 1,这将是 return 1,但不确定这是否是您想要的。
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
我预计 'nearest' 与上述 round
类似。然而,
vq = interp1(v, xq, 'nearest', 0)
vq =
0 0 0 1 1 1 0 0 0
这既不是round
(xq),也不是floor
,也不是ceil
。我错过了什么?
问题是您的前三个点 (0.4, 0.6, 0.8) 超出了域(即 [1, 2])。所以 interp1 使用你设置为零的‘extrapval’。
尝试:
vq = interp1(v, xq, ‘nearest’, ‘extrap’)
尽管对于所有 x < 1,这将是 return 1,但不确定这是否是您想要的。