matlab实现 分段线性插值算法 piecewise linear interpolation

  • Post author:
  • Post category:其他


我们先看《数值计算方法(丁丽娟)》这本书上关于分段线性插值的例题:

所以基本原理从例题中可以看懂

现在设计matlab脚本如下:输入inputn行2列的矩阵,代表已知的原始点,第一列为X值,第二列为Y值

inputneed表示所求的点,为1行多列,可以同时输入多个点的x值,输出也会为x对应的y值

%分段线性插值法
%piecewise linear interpolation
clear all
%输入input n*2的矩阵 第一列为x值,第二列为y值 inputneed 大小为m*1 为m个需要求值的线性插值
%输出线性插值的矩阵大小为n*1
input=[0,1;1,0.5;2,0.2;3,0.1;4,0.05882;5,0.03846];
inputneed=[2.5;3.5;4.5];
input=sortrows(input,1) ;
[ys,xs]=size(inputneed);
[ys1,xs1]=size(input);
for i=1:ys
    for j=1:ys1-1
        if input(j,1)<=inputneed(i,1)&&inputneed(i,1)<=input(j+1,1)
            output(i,1)=(inputneed(i,1)-input(j+1,1))/(input(j,1)-input(j+1,1))*input(j,2)+(inputneed(i,1)-input(j,1))/(input(j+1,1)-input(j,1))*input(j+1,2);
        end
    end
end
output=[inputneed,output];
disp('插值点')
disp(output)



版权声明:本文为m0_47787372原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。