首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Liner(分段线性插值)

  • 23-09-22 20:43
  • 3002
  • 6458
blog.csdn.net

第一次写微博,记录自己的学习历程~~~~欢迎大家一起探讨~~~~

分段线性插值故名思议就是说把给定样本点的区间分成多个不同区间,记为[xi,xi+1],在每个区间上的一次线性方程为:

关于其证明:

分段线性插值在速度和误差取得了很好的平衡,插值函数具有连续性,但是由于在已知点的斜率是不变的,所以插值结果不光滑。

 

第一次用matlab写代码,有点手生。

liner.m文件:

 

function yy = liner(x,y,xx)
%x是已知数据点的x值
%y是已知数据点的y值
%是待插入点的横坐标值
%假设输入的样本点的x值是依次增大的
syms t;
if(length(x)==length(y))
    n=length(x);
else
    disp('x和y维数不相等!');
    return;
end

for i=1:n-1
    %     disp(['区间为',num2str(x(i)),'-',num2str(x(i+1))]);
    yy(i)=((t-x(i+1))/(x(i)-x(i+1)))*y(i)+((t-x(i))/(x(i+1)-x(i)))*y(i+1);
end

if(nargin==3)
   nn=length(xx);
for i=1:nn
    for j=1:n-1
        if(xx(i)>x(j)&xx(i)<=x(j+1))
             yynum(i)=subs(yy(j),'t',xx(i));   %计算插值点的函数值.subs是替换函数,把x0用t替换
        end
    end
end    
yy=yynum;
else
    yy=collect(yy);          %将插值多项式展开
    yy=vpa(yy,6);            %将插值多项式的系数化成6位精度的小数
end
end


linerInsert.m文件:

 

 

x=0:2*pi;
y=sin(x);
xx=0:0.2:6;
yy=liner(x,y,xx);
plot(x,y,'o:',xx,yy,'+r')


可以看到插值结果:

本文已经同步到微信公众号中,公众号与本博客将持续同步更新运动捕捉、机器学习、深度学习、计算机视觉算法,敬请关注

 

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览51048 人正在系统学习中
注:本文转载自blog.csdn.net的风翼冰舟的文章"https://blog.csdn.net/zb1165048017/article/details/48293523"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top