>> X = [1,2,3];
>> Y = [12,5000,12000];
>> interp1(X,Y,4,'nearest','extrap')
ans = 12000
>> interp1(X,Y,4,'linear','extrap')
ans = 19000
But note that you cannot pick a method like linear, spline, etc, and also limit the extrapolation to the end values:
>> interp1(X,Y,[0,1.5,4],'linear','extrap')
ans =
-4976 2506 19000
>> interp1(X,Y,[0,1.5,4],'nearest','extrap')
ans =
12 5000 12000
But you can easily select the interpolation method and limit to the end values, by simply using max and min:
>> max(Y(1),min(Y(end),interp1(X,Y,[0,1.5,4],'linear','extrap')))
ans =
12 2506 12000
If you only need to extrapolate in one direction then you could set the extrapolation value:
>> interp1(X,Y,[1.5,4],'linear',Y(end))
ans =
2506 12000
Best Answer