几种简单的插值方法与实例

2023-05-16

          插值方法及MATLAB实例解析

插值:已知有限个已知数据点,求得的插值函数必须过这些点,然后在这个范围内用插值函数求得未知数据点的值。

拟合:已知有限个已知数据点,但拟合函数不用过每一个数据点,只要在这些点的总偏差最小。

下面的几种插值方法不再赘述,可以参考链接,具体的会在程序中注解。

  1. 分段线性插值
    参考资料
  2. 样条插值
    方法描述
  3. 拉格朗日插值多项式
    拉格朗日插值的基函数为:
    l i = ( x − x 0 ) ⋅ ⋅ ⋅ ( x − x i − 1 ) ( x − x i + 1 ) ⋅ ⋅ ⋅ ( x − x n ) ( x i − x 0 ) ⋅ ⋅ ⋅ ( x i − x i − 1 ) ( x i − x i + 1 ) ⋅ ⋅ ⋅ ( x i − x n ) l_{i}=\frac{(x-x_{0})\cdot\cdot\cdot(x-x_{i-1})(x-x_{i+1})\cdot\cdot\cdot(x-x_{n})}{(x_{i}-x_{0})\cdot\cdot\cdot(x_{i}-x_{i-1})(x_{i}-x_{i+1})\cdot\cdot\cdot(x_{i}-x_{n})} li=(xix0)(xixi1)(xixi+1)(xixn)(xx0)(xxi1)(xxi+1)(xxn)
               = ∏ ( j = 0 , j ≠ i ) n x − x j x i − x j , i = 0 , 1 , . . . , n 。 =\prod_{(j=0,j \neq i)}^{n}\frac{x-x_{j}}{x_{i}-x_{j}},i=0,1,...,n。 =(j=0,j=i)nxixjxxj,i=0,1,...,n

    拉格朗日基函数经过每一个已知点。
    l i l_{i} li是n次多项式,满足:
    l i ( x i ) = { 0 , j ≠ i , 1 , j = i 。 l_{i}(x_{i})=\left\{\begin{matrix}0,j \neq i, & \\1,j=i。 & \end{matrix}\right. li(xi)={0,j=i,1,j=i
    拉格朗日插值函数:
    L n ( x ) = ∑ i = 0 n y i l i ( x ) = ∑ i = 0 n y i ( ∏ i = 0 n ) x − x j x i − x j 。 L_{n}(x)=\sum_{i=0}^{n}y_{i}l_{i}(x)=\sum_{i=0}^{n}y_{i}(\prod_{i=0}^{n}) \frac{x-x_{j}}{x_{i}-x_{j}}。 Ln(x)=i=0nyili(x)=i=0nyi(i=0n)xixjxxj

举个简单的例子:
已知三个点 ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) , x 1 ≠ x 2 ≠ x 3 (x_{1},y_{1}),(x_{2},y_{2}),(x_{3},y_{3}),x_{1}\neq x_{2}\neq x_{3} (x1,y1),(x2,y2),(x3,y3)x1=x2=x3,那么拉格朗日插值函数就可以写成:

f ( x ) = y 1 ( x − x 2 ) ( x − x 3 ) ( x 1 − x 2 ) ( x 1 − x 3 ) + y 2 ( x − x 1 ) ( x − x 3 ) ( x 2 − x 1 ) ( x 2 − x 3 ) + y 3 ( x − x 1 ) ( x − x 2 ) ( x 3 − x 1 ) ( x 3 − x 2 ) f(x)=y_{1}\frac {(x-x_{2})(x-x_{3})}{(x_{1}-x_{2})(x_{1}-x_{3})}+y_{2}\frac {(x-x_{1})(x-x_{3})}{(x_{2}-x_{1})(x_{2}-x_{3})}+y_{3}\frac {(x-x_{1})(x-x_{2})}{(x_{3}-x_{1})(x_{3}-x_{2})} f(x)=y1(x1x2)(x1x3)(xx2)(xx3)+y2(x2x1)(x2x3)(xx1)(xx3)+y3(x3x1)(x3x2)(xx1)(xx2)

不难发现:当 x = x 1 , x 2 , x 3 x=x_{1},x_{2},x_{3} x=x1,x2,x3的时候,刚好是已知点对应的函数值,要插值的时候只需将 x x x换成该范围内的任意值即可,这下你应该很清楚了。

4. 例题与程序

%插值
clear,clc
x0=[0   3   5   7   9   11   12   13   14  15];       %已知数据点
y0=[0  1.2  1.7  2.0  2.1  2.0  1.8  1.2   1.0  1.6];
x=0:0.1:15;                   %要插值的点 
y1=interp1(x0,y0,x);          %第一种插值法:默认线性插值(分段线性插值)

y2=interp1(x0,y0,x,'spline'); %第二种插值法:三次样条插值
                              %csape(x0,y0,conds)
pp1=csape(x0,y0);             %csape()函数返回给定点(x0,y0)的三次样条插值,此处conds默认为complete
y3=ppval(pp1,x);              %ppval函数给出三次样条插值pp在x处对应的函数值

pp2=csape(x0,y0,'second');   %此处conds为边界为二阶导数,默认值为[0 0]
y4=ppval(pp2,x);
%y3和y4的差别在于conds的选择不同


%拉格朗日插值
syms t;
sum=0;
f=1;
for i=1:10
    for j=1:10
        if j==i
            continue;   %i=j时跳出本次循环
        else
        f=f.*(((t-x0(j))./(x0(i)-x0(j))));    %基函数表达式
        end
    end
    sum=sum+f.*y0(i);    
    f=1;
end
y5=vpa(subs(sum,t,x),6)            %将符号变量替换为x

A=[x',y1',y2',y3',y4',y5'];        %输出5种插值点的函数值
vpa(A,6)                           %显示5位有效数字


%-------------------------------绘图-----------------------------%
subplot(2,2,1)
plot(x0,y0,'+',x,y1,'-')     %绘制原来数据点和分段线性插值的图像
title('Piecewise linear')

subplot(2,2,2)               %用spline插值
plot(x0,y0,'+',x,y2)
title('Spline1')

subplot(2,2,3)               %用csape插值 
plot(x0,y0,'+',x,y3)
title('Spline2-csape')

subplot(2,2,4)               %用拉格朗日插值 
plot(x0,y0,'+',x,y5)
title('Lagrange')

%求x=0处的曲线斜率
dx=diff(x);
dy=diff(y3);
dy_dx=dy./dx;
dy_dx0=dy_dx(1)       

%求x<=13<=15内的最小点
ytemp=y3(131:151);        %步长是0.1
ymin=min(ytemp);          %找到y的最小的y值再找到对应的x值
index=find(y3==ymin);     %find()函数,返回.....的索引
xmin=x(index);
min_point_13_15=[xmin,ymin]   


结果如下:

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

几种简单的插值方法与实例 的相关文章

  • LeetCode_26

    删除有序数组中的重复项 给你一个 升序排列 的数组 nums xff0c 请你 原地 删除重复出现的元素 xff0c 使每个元素 只出现一次 xff0c 返回删除后数组的新长度 元素的 相对顺序 应该保持 一致 由于在某些语言中不能改变数组
  • 快乐的shell命令行

    快乐的shell命令行 PART1 基础 1 权限 超级用户权限 普通用户 2 复制粘贴 复制 xff1a 鼠标左键沿着文本拖动高亮的文本被复制到X管理的缓冲区 xff08 或者双击一个单词 xff09 粘贴 xff1a 鼠标中键 3 简单
  • Linux三剑客(grep、awk、sed)

    Linux三剑客 xff08 grep awk sed xff09 grep xff08 文本过滤工具 xff09 A 10显示匹配字符串后面10行内容 n显示匹配字符串在匹配文件中的行号 w整个字符串匹配 c显示匹配个数 C 10显示匹配
  • 查询Linux内核中的结构体/函数定义

    查询Linux内核中的结构体 函数定义 下载 安装Ctags 下载ctags源码https ctags sourceforge net 解压tar zxvf ctags 5 8 tar gz配置 configure编译make安装sudo
  • 新广告法违规词、敏感词在线检测工具

    新广告法的上线实行 xff0c 限制了很多的违规词 xff0c 敏感词的使用 xff0c 极限用语的处罚由原来的退一赔三变更为罚款二十万元起 如何确定广告中是否存在有敏感词呢 小龙经过多方努力 xff0c 终于开发出了新广告法违规词 敏感词
  • Linux应用学习——GDB调试

    GDB调试学习记录 常用操作 以client c为例 span class token macro property span class token directive hash span span class token directi
  • Linux学习笔记

    Linux学习笔记 Linux驱动 GPIO GIC中断 Cortex A7中断管理器GIC IIC设备框架 SPI设备框架 MISC驱动框架 Input设备框架 Platform设备框架 USB设备 Linux应用开发 Shell 快乐的
  • Cortex-A7中断控制器GIC

    Cortex A7中断控制器GIC 中断号 芯片内部的中断都会引起IRQ InterruptGIC将所有的中断源 最多1020个中断ID 分为三类 SPI SharedPeripheralInterrupt 共享中断 xff0c 外部中断都
  • Linux应用学习——多进程

    进程 当一个进程正常终止时可以通过int atexit void function void 注册进程终止处理函数 PART1 进程相关概念 进程是一个动态的过程 xff0c 而非一个静态的文件 xff0c 是程序的一次运行过程 xff0c
  • Linux应用学习——多线程

    多线程 PART1 线程相关概念 线程时参与系统调度的最小单位 被包含在进程之中 xff0c 是进程中的实际运行单位 一个进程可以创建多个线程 xff0c 多个线程实现并发运行 xff0c 每个线程执行不同的任务 线程时最基本的运行单位 x
  • Linux编程小工具

    编程小技巧 1 函数 结构体查询 需求背景 xff1a 安装了ctag安装使用ctag可以通过vim t 34 i2c client 34 来查询i2c client结构体的信息 不方便的地方 xff1a 需要进入指定的目录下才行 Git
  • Linux应用学习_网络开发

    Linux应用学习 网络开发 1 TCP套接字编程 1 1 套接字 1 1 1 通用套接字sockaddr span class token keyword struct span span class token class name s
  • Linux应用学习——高级I/O复用

    高级I O 阻塞I O 阻塞 xff0c 进入休眠状态 xff0c 让出CPU的使用权 xff0c 等待阻塞的条件为真普通文件一定是以非阻塞的方式进行I O操作文件默认是通过阻塞式操作的 fd span class token operat
  • 《从0到1大话操作系统》--(2)纸质内存中的数据结构

    你一定听过那句著名的等式 xff1a 程序 61 数据结构 43 算法 你可能不相信 xff0c 一个叫尼古拉斯 沃斯 xff08 Niklaus Wirth xff09 的瑞士计算机科学家 xff0c 凭这句话 xff0c 获得了图灵奖
  • 《从0到1大话操作系统》--(1)万物起源:编码

    古希腊毕达哥拉斯学派的世界观人为世界的本质是数 在计算机的世界中 xff0c 所有的一切也确实是数 万物起源 xff1a 编码 1 万物皆可编码2 ASCII编码3 互不兼容4 Unicode编码 1 万物皆可编码 曾经有一位懵懂的少年 x
  • 【安全】如何关闭Windows系统的137, 139, 445端口?

    4月14日晚 xff0c 一个叫Shadow Brokers的黑客组织泄露了一大波Windows的远程漏洞利用工具 xff0c 事件细节可以参照运维派前面的文章 Windows血崩 xff0c 一波大规模 0day 攻击泄漏 恩威科技 am
  • Linux中断、系统调用处理流程与进程切换

    1 中断与系统调用的过程 1 程序控制流 正常程序的控制流只有next xff08 执行下一条指令 xff09 和goto xff08 跳转到另一条指令执行 xff09 除了正常控制流之外 xff0c 还有异常控制流 xff0c 广义上异常
  • 开篇叙事

    开篇叙事 我为什么会在这儿我的主题我的经历 我为什么会在这儿 作为我第一次踏足CSDN xff0c 当然 xff0c 我说的是在CSDN上写博客 xff0c 我在CSDN上阅读博客已经有很长一段时间了 xff0c 这里有非常多的非常棒的博主
  • Redhat(红帽) Linux软件包管理rpm概述

    1 软件包管理的内涵 习惯了Windows上安装软件的方式 下载安装包 xff0c 双击运行 xff0c 点击几次下一步后 xff0c 软件就安装完了 我也是常年使用Windows xff0c 习惯了Windows的方式 xff0c 却从来
  • FreeRTOS(一):裸机系统与多任务系统

    裸机系统与多任务系统 3 1裸机系统3 1 1轮询系统3 1 2前后台系统 3 2多任务系统总结 3 1裸机系统 裸机 xff1a 英文名是Bare machine Bare metal xff0c 指没有配置操作系统和其他软件的电子计算机

随机推荐

  • FreeRTOS(二):数据结构—列表与列表项

    数据结构 列表与列表项 4 列表与列表项4 1链表4 1 1单向链表4 1 2双向链表4 1 3链表与数组的对比 4 2FreeRTOS中链表的实现4 2 1实现链表节点1 定义链表节点数据结构2 链表节点初始化 4 2 2实现链表根节点1
  • Cordova技术初次学习

    文章目录 前言一 Cordova 是什么 xff1f 二 关于Cordova环境搭建前提要求 xff1a 1 利用npm 安装2 创建应用3 添加平台4 运行 三 结语 前言 这是一篇关于Cordova入门学习的记录文章 一 Cordova
  • 修改datax,Java获取mongo,Document转换成json,遇到的类型问题,用JsonWriterSettings解决

    java numberlong 解决方法 在修改datax插件的时候遇到了问题 问题 xff1a 我们存在mongo中带有数据类型 xff0c 如图 我们直接将Document转json会带上类型 且在mongo java driver的j
  • VirtualBox 主机ping不通虚拟机的解决办法

    visualBox的主机是ping不通虚拟机的 但是虚拟机能ping通主机 要先进行以下配置 第一个网卡为NAT Network 在网络配置中 xff0c 新建一个网卡2为桥接网卡 新建共享文件夹 国外一个老哥说的 xff0c 不新建共享文
  • 基于python实现相关模板匹配跟踪之SSDA算法

    基于python实现相关模板匹配跟踪之SSDA算法 1 单张图片匹配 1 1代码 1 2 效果 2 视频跟踪 2 1代码 2 2 效果 2 3 优化思路 3 参考链接 相关模板匹配跟踪和质心跟踪都是传统算法 相较于AI算法 具有极快的处理速
  • AGV小车经典算法设计及应用

    1 AGV小车的发展背景 在现代化工业的发展中 xff0c 提倡高效 xff0c 快速 xff0c 可靠 xff0c 提倡将人从简单的工作中解放出来 机器人逐渐替代了人出现在各个工作岗位上 机器人具有可编程 可协调作业和基于传感器控制等特点
  • 扒完社交网络关系才明白,《权力的游戏》凭什么是神作

    摘要 xff1a 凡人皆有一死 没错 xff0c 但那是 凡人 会数据的 xff0c 都不是凡人 DT君当你看冰火的时候 xff0c 你在看什么 xff1f 作为一个 冰与火之歌 的资深迷弟 xff0c 看到如今的冰火电视 Valar Mo
  • 数字IC设计入门(1)初识电路板和芯片

    本文为入门级同学和零电子基础同学准备 xff0c 有一定电子基础的请直接忽略 xff0c 芯片从本质上说还是电路 xff0c 因此有必要从电路板开始了解芯片工作过程 xff0c 下面将简单介绍一块电脑主机板 电路板已在我们生活中无处不在 x
  • 数电4_4——常见组合逻辑电路(3)数据选择器

    数据选择器 1 1 工作原理1 1 1 电路图1 1 2 写出逻辑表达式 1 1 3 对应真值表 1 2 应用1 2 1 用双四选一设计八选一1 2 2 用数据选择器设计组合逻辑电路1 2 2 1 用四选一实现1 2 2 2 用八选一实现1
  • 机器学习实战之科比数据集分析(随机森林寻最优值参数)

    文章目录 总体思路分为三部1 查看数据 xff0c 对数据进行清洗 xff0c 规约1 1 查看数据1 2 数据清洗 规约1 3 删除不相关的特征1 4 数据one hot处理 2 建立模型 xff0c 挑选出最优参数2 1 准备数据集 训
  • 一文读懂anchor-base和anchor-free

    1 从Faster RCNN看Anchor Faster RCNN相对于Fast RCNN的一个改进是引入了RPN网络 xff0c RPN用于区域推荐 xff0c 替换了此前的SS算法使得网络在整体上更加的CNN化 那么RPN是怎么进行区域
  • 用MATLAB提取字符串中的特定类别(数字等)

    如果一个字符串中包含多种格式的字符 xff0c 想把其中特定的一种提取出来 xff0c 有一个函数可以轻松解决 xff1a TF 61 isstrprop str category 确定输入文本中的字符是否为指定的类别 xff0c 如字母
  • 云计算基础与应用 第三章 云服务器

    以下为自己个人做的笔记 xff0c 不带有商业性质 xff0c 纯粹交流分享学习资料 xff0c 如有侵权 xff0c 请联系作者 xff0c 作者看到会第一时间删除 xff0c 如有侵权敬请见谅 文章目录 3 1 云服务器概述3 2 云服
  • 工作记录:NX系统烧录

    一 固件 BSP下载 https developer nvidia com embedded L4T r32 Release v4 2 t186ref release aarch64 Tegra Linux Sample Root File
  • YOLO v5获取目标的坐标位置,以及将crop融合到全黑背景中

    可能很多人不知道我这个标题后面这句话的含义 xff0c 因为这个场景可能很多地方压根用不到 xff0c 暂时不细说 我是上个月开始接触yolov5 v6 2版本做目标识别的 xff0c 也没有什么深度学习和pytorch的概念 xff0c
  • slam的简单操作以及原理

    slam的原理以及应用 1 新建工作文件夹 使用mkdir命令新建文件夹 slambook和ch1文件夹 xff0c 并利用cd命令进入ch1文件下 xff0c 截图如 2 编写helloslam小程序 使用vim命令创建helloslam
  • 遗传算法实例解析

    遗传算法实例及MATLAB程序解析 遗传算法Genetic Algorithms xff0c GA xff09 是一种基于自然选择原理和自然遗传机制的搜索 xff08 寻优 xff09 算法 xff0c 它是模拟自然界中的生命进化机制 xf
  • nginx 反向代理 获取客户端真实IP和域名以供日志分析

    场景 xff1a 客户网站或者移动APP在请求到达后端服务之前 xff0c 会经过层层代理的转发 典型的是CDN xff08 反向代理 43 Squid缓存 xff09 xff0c 如果是带有安全或者WAF功能的则结构要更为复杂些 一般的解
  • Linux服务器上安装配置VNC Server

    前言 项目需要在Linux上进行数据抽取的相关任务 xff0c 使用的是Kettle这一ETL工具 xff0c 但是服务器就一个主机 xff0c 这里对应Kettle的job和trans等相关配置就无法进行 xff0c 所以需要使用远程图形
  • 几种简单的插值方法与实例

    插值方法及MATLAB实例解析 插值 xff1a 已知有限个已知数据点 xff0c 求得的插值函数必须过这些点 xff0c 然后在这个范围内用插值函数求得未知数据点的值 拟合 xff1a 已知有限个已知数据点 xff0c 但拟合函数不用过每