Problem 72. Interpolator
You have a two vectors, a and b. They are monotonic and the same length. Given a value, va, where va is between a(1) and a(end), find the a(n) and a(n+1) that flank it. Now interpolate the value, vb, such that it is proportionally between b(n) and b(n+1).
Note that va can land exactly on a value of a as well.
分析:你有两个向量,a和b,它们是单调的,长度相同。给定一个值va,其中va在a(1)和a(end)之间,求出a(n)和它旁边的a(n+1)。现在对值vb进行插值,使其在b(n)和b(n+1)之间成比例。请注意,va也可以精确地落在a的值上。
例如:
va = 3; %差值点为3
a = [0 1 5 6 7 10]; %对应在1-5之间,所以a(2)-a(3)
b = [2 3 5 7 9 100]; %vb应该在b(2)-b(3)中间
vb = 4; %(3+5)/2=4 线性插值
vb=interpolator(va, a, b)
varargin指代的是一个函数的变输入参数列表。所谓的变输入参数列表:即varargin可以等价于任意不定个数的输入参数。
y=interp1(varargin{[2,3,1]})=interp1(v第二个参数,第三个参数,第一个参数)
y=interp1(a,b,va,'method'):a,b,为插值点,y为在被插值点va处的插值结果,method:nearest 最邻近插值,linear 线性插值,spline 三次样条插值,pchip立方插值,缺省为线性插值。