在不调用matlab中interp1函数的前提下,如何实现插值算法的功能?
2条回答 默认 最新
关注
插值算法还有很多,你说的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三次样条插值');
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用