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

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

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

现在设计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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值