0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在单片机上做插值算法?

Q4MP_gh_c472c21 来源:21ic论坛 作者:一路向北lm 2021-01-26 10:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

第一步:学你所学,不懂也得懂,最枯燥的数学公式来了

在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。 如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。这样的多项式称为拉格朗日(插值)多项式。 数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数。拉格朗日插值法最早被英国数学家爱德华·华林于1779年发现,不久后(1783年)由莱昂哈德·欧拉再次发现。1795年,拉格朗日在其著作《师范学校数学基础教程》中发表了这个插值方法,从此他的名字就和这个方法联系在一起。

b6863858-5f63-11eb-8b86-12bb97331649.png



第二步:构造拉格朗日插值算法函数,并使用C/C++ 语言实现

b6d1732c-5f63-11eb-8b86-12bb97331649.png

//预先定义插值节点的个数为1000个,根据控制台输入的个数num从而确定插值节点的个数const int N=1000;// 拉格朗日插值算法float lglr(float x[], float y[],int n,float t){float yResult=0.0;//LValue[N]存放的是每次求解的插值基函数的通项float LValue[N];//循环变量k,mint k,m;//插值基函数中的上下累乘temp1,temp2float temp1,temp2;for(k=0;k

b7335614-5f63-11eb-8b86-12bb97331649.png


2.同样是给写入的算法送入正弦曲线3个点,来预测此区间的其它点,发现预测出的正弦曲线不太理想,相关度很差。

b7882ec8-5f63-11eb-8b86-12bb97331649.png

3.增加给写入的算法送入正弦曲线的点数到10个点,来预测此区间的其它点,发现预测出的正弦曲线已达到要求,相关度很好。

b7d45302-5f63-11eb-8b86-12bb97331649.png


4.下面是使用matlab在绘制的图像,分别是线性3点、正弦3、5、10的和原始值对比的图像。

b84918b8-5f63-11eb-8b86-12bb97331649.png



第四步:移植到单片机使用串口输出测试插值效果,效果还可以哦!

b89679aa-5f63-11eb-8b86-12bb97331649.png



第四步:进阶完善,有点不甘心,使用Qt 搭了一个界面,做了一下可视化。 你别说效果还可以,Qt界面代码 放到了gitee有兴趣的来一起完善 https://gitee.com/lumengcode/my-qt/tree/master/MathTool/MathTool



插值题外话:

关于插值算法:可以继续完善牛顿插值、三次样条插值等,都很好玩!

原文标题:教你在单片机上做插值算法

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663584
  • 插值算法
    +关注

    关注

    0

    文章

    7

    浏览量

    2140

原文标题:教你在单片机上做插值算法

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    单片机程序的执行

    。 但是单片机上只有几K的RAM,而flash一般有几十K甚至1M,这个时候指令和数据都在内存中吗(这里指的内存仅指RAM,因为PC上我们常说的内存就是DDR RAM memory,先入为主以至于认为
    发表于 12-04 06:20

    单片机算法

    平滑滤波算法 设置一个数据缓存区,每新采集一个数据便存入暂存区中,同时去掉一个最老数据,保存这N个数据始终是最新更新的数据。采用环型队列结构可以方便地实现这种数据存放方式。 #define
    发表于 11-28 08:19

    为什么单片机还在用C语言编程?

    的缺陷 高级语言存在的目的是可以实现更为优化的算法,更多的是为了方便的执行方案,但是,高级语言对程序存储空间的占用要比汇编和C语言多很多。由于这个原因就决定了其他高级语言不适用在单片机上单片机
    发表于 11-28 07:37

    用于单片机几种C语言算法

    ,降低系统开支。 只要适当改变滤波器的滤波程序或运算,就能方便地改变其滤波特性,这对于滤除低频干扰和随机信号会有较大的效果。 在单片机系统中常用的滤波算法有限幅滤波法、中值滤波法、算术平均滤波法、加权平均
    发表于 11-27 06:00

    求一套听声辩位的算法,并在板机上部署?

    求一套听声辩位的算法,并在板机上部署。有谢。
    发表于 11-10 23:07

    请问有办法在嵌入式单片机上实现对片外Flash的数据增删功能吗?

    客户有一个需求, 想要删除已保存的数据, 单片机使用的是STM32F407, 存储的是有序的递增数据, 删除功能我一直不知道怎么空间回收, Flash的擦除寿命有影响吗, 单片机内存够不够, 写入
    发表于 09-23 06:10

    单片机用什么封装

    。深圳市安凯星科技有限公司在为拓邦、朗科、安徽龙多等客户开发方案时,会根据项目场景精准选择封装类型,确保性能与实用性平衡。 常见单片机封装类型及特点 DIP 封装:直式的经典之选 DIP(双列直封装)是最基础的
    的头像 发表于 08-01 13:47 896次阅读

    单片机怎么烧程序

    单片机烧程序是将编写好的程序代码写入单片机内部存储单元,让单片机按照预设逻辑工作的过程,是单片机应用开发中不可或缺的环节。无论是简单的灯光控制程序,还是复杂的工业控制
    的头像 发表于 07-23 11:47 651次阅读

    STM32单片机片上数字滤波器操作文档 快速入门数字滤波器在单片机上的实现

    这个文档,是为了帮助大家快速入门数字滤波器在单片机上的实现。
    的头像 发表于 06-23 16:53 1339次阅读
    STM32<b class='flag-5'>单片机</b>片上数字滤波器操作文档 快速入门数字滤波器在<b class='flag-5'>单片机上</b>的实现

    单片机常用算法源码下载!

    单片机常用算法源码下载!
    发表于 06-10 20:44

    单片机项目实例:XPT2046触摸屏芯片驱动与校准算法

    单片机项目实例:XPT2046触摸屏芯片驱动与校准算法,推荐下载!
    发表于 06-09 22:24

    51+单片机TCP-IP+协议栈ZLIP源码

    概述 单片机上网技术,是当前的一个热门技术。单片机上网技术中的一个重要部分是在单片上实现 TCP/IP 协议栈。现在可获得的 TCP/IP 源代码一般并不为 51 单片机设计,而 51
    发表于 04-22 15:11

    单片机方面的大佬吗?有几个单片机方面的问题需要请教一下

    如题,有单片机方面的内容需要请教一下 (先叠个甲)纯小白 我需要一个单片机控制模块,我现在的想法是:在一个单片机上,我要让他控制一个传感器和一个步进电机(运动系统,运动距离为13.5cm),同时
    发表于 03-29 18:35

    请问DAC39J84内部方式是0吗?

    请问DAC39J84内部方式是0吗? 请问2x 4x 8x 16x 过程分别是怎样
    发表于 01-03 06:41

    Teledyne Lecroy示波器算法

    示波器是通过内部硬件ADC对模拟信号采样来获取离散的数据点,然而这些离散的数据点有时难以完整呈现出原始模拟信号的全貌。软件算法的意义就在于,它能够依据特定的数学算法,在已采集的数据
    的头像 发表于 12-24 16:11 1855次阅读