在不调用matlab中interp1函数的前提下,如何实现插值算法的功能?
插值算法还有很多,你说的interp1只是线性插值,还可以用多项式拟合插值(polyval,polyfit),次数越高拟合效果越好,但也有可能过拟合;还有常有的三次样条插值spline、最近邻插值(nearst)等,例:
clc,clear,close all;
x = linspace(-2,2,10);
y = exp(-x.^2);
figure(1)
stem(x,y,"LineWidth",1.5)
grid on
title('f(x)')
%polyfit多项式拟合插值
p = polyfit(x,y,7);
y1 = polyval(p,x);
figure(2)
plot(x,y,'g-o',"LineWidth",1.5)
hold on
plot(x,y1,"LineWidth",1.5)
hold off
xlim([-2 2]);
grid on
title('polyfit多项式拟合插值');
%spline三次样条插值
yy = spline(x,y,xq);
figure(3)
plot(x,y,'o',xq,yy,"LineWidth",1.5)
xlim([-2 2]);
grid on
title('spline三次样条插值');
拉格朗日插值法