Хотел добавить это в ответ @ hazeiio , за который я проголосовал.Вы можете видеть, что это хорошо иллюстрирует его точку зрения.
Метод интерполяции сильно влияет на значения, полученные между точками данных (см. Изображение ниже).Вы увидите, что опасно слепо вызывать метод интерполяции, не проверяя, что может пойти не так.
% MATLAB R2017a
x = [32 34 35 36 37 38];
y = [26 28 31 30 29 25];
xTgts = [33 33.5 35 37.25 37.5 37.75];
% Interpolation between data points depends on method
Linear = interp1(x,y,xTgts)
Spline = interp1(x,y,xTgts,'spline') % Equivalent to spline(x,y,xTgts) yet faster somehow
Cubic = interp1(x,y,xTgts,'pchip')
Как указывалось, все они будут точно соответствовать данным (см. Рисунок ниже).
% Interpolation of data points will match
Linear = interp1(x,y,x)
Spline = interp1(x,y,x,'spline')
Cubic = interp1(x,y,x,'pchip')
Код для иллюстрации
step = 0.01;
xTest = (32:step:38)';
figure, hold on, box on
p(1) = plot(x,y,'ks','DisplayName','Data')
p(2) = plot(xTest,interp1(x,y,xTest),'b-','DisplayName','Linear')
p(3) = plot(xTest,interp1(x,y,xTest,'spline'),'r-','DisplayName','Spline')
p(4) = plot(xTest,interp1(x,y,xTest,'pchip'),'g-','DisplayName','Cubic')
legend('show')
% Options
xlabel('X')
ylabel('Y')
title('Interpolation Example')
for k = 1:4, p(k).LineWidth = 2; end
axis equal
xlim([31 39])
ylim([24 32])
Ссылка:
Интерполяция (вики)