Хотел добавить это в ответ @ 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])
Ссылка:
Интерполяция (вики)
Методы интерполяции
Опасности интерполяции
Интерполяция более высокого порядка - плохая идея
person
SecretAgentMan
schedule
28.11.2018