嵌入式算法:STM32 F4xx 使用DSP实现cubic spline插值算法
参考官方文档:
Linear Interpolate Example
Cubic Spline Interpolation
cubic spline的基本概念:
定义:Spline interpolation is a method of interpolation where the interpolant is a piecewise-defined polynomial called "spline"
计算过程:A is a tridiagonal matrix (a band matrix of bandwidth 3) of size N=n+1. The factorization algorithms (A=LU) can be simplified considerably because a large number of zeros appear in regular patterns. The Crout method has been used: 1) Solve LZ=B
计算已知点两端范围外的点:It is possible to compute the interpolated vector for x values outside the input range (xq<x(1); xq>x(n)). The coefficients used to compute the y values for xq<x(1) are going to be the ones used for the first interval, while for xq>x(n) the coefficients used for the last interval.
接口说明(Version 1.10.0):
1、使用接口一定要注意数组的大小;
2、x 输入数组必须严格按升序排序,并且不能包含两次相同的值: (x(i)<x(i+1))。
//初始化实例函数
void arm_spline_init_f32(arm_spline_instance_f32 *S,arm_spline_type type,const float32_t *x,const float32_t *y,uint32_t n,float32_t *coeffs,float32_t *tempBuffer ) /*
[in,out] S 指向浮点样条结构的一个实例。
[in] type 三次样条插值类型(边界条件)
[in] x 指向已知数据点的 x 值。
[in] y 指向已知数据点的 y 值。
[in] n 个已知数据点。
[in] coeffs b、c 和 d 的系数数组:注意大小是3*(n-1),其中的n是已知的点数
[in] tempBuffer 用于内部计算的 tempBuffer 缓冲区数组,注意大小是n+n-1,其中的n是已知的点数
*///运行cubic spline函数
void arm_spline_f32 (arm_spline_instance_f32 *S,const float32_t *xq,float32_t *pDst,uint32_t blockSize ) /*
[in] S 指向浮点样条结构的一个实例。
[in] xq 指向插值数据点的x值。
[out] pDst 指向输出数据块。
[in] blockSize 输出数据的样本数。
*/
cubic spline 的DSP代码实现(Version 1.10.0):
#include "arm_math.h"
#include "math_helper.h"#define DATA_LEN 1024 //数据长度int main(void)
{arm_spline_instance_f32 spline_instance;arm_spline_type type = 0;float data[512];float data_out[1024];uint32_t n = 512;float coeffs[3*(n-1)];float temp_buffer[n+n-1];arm_spline_init_f32(&spline_instance, type , data, data_out, n, coeffs, temp_buffer);arm_spline_f32(&spline_instance, t, data, data_out, DATA_LEN);
}
嵌入式算法:STM32 F4xx 使用DSP实现cubic spline插值算法相关推荐
- 【嵌入式开发-STM32】初识STM32
[嵌入式开发-STM32]初识STM32 文章目录 [嵌入式开发-STM32]初识STM32 一.什么是STM32 二.STM32的拓展 三.如何确定STM32选型 3.1.STM32的命名方法 3. ...
- 【嵌入式】STM32通讯方式
欢迎关注博主 Mindtechnist 或加入[Linux C/C++/Python社区]一起学习和分享Linux.C.C++.Python.Matlab,机器人运动控制.多机器人协作,智能优化算法, ...
- rust做嵌入式开发_Rust 嵌入式开发 STM32 amp; RISC-V
Rust 嵌入式开发 STM32 & RISC-V 发布于 2020-04-03 11:07:06 本帖最后由 wuhanstudio 于 2020-4-3 11:58 编辑 更新地址: [m ...
- 教你如何在STM32中使用DSP指令
01.DSP简介 提到DSP,作为电子专业的学生,大部分第一时间想到的是DSP芯片,DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用 ...
- 嵌入式算法移植优化学习笔记5——CPU,GPU,TPU,NPU都是什么
嵌入式算法移植优化学习笔记5--CPU,GPU,TPU,NPU都是什么 一.什么是CPU? 二.什么是GPU? 三.什么是NPU? 四.什么是TPU? 附: 随着AI的广泛应用,深度学习已成为当前AI ...
- 【嵌入式】STM32实现SPI双机通信的一些细节(2)片选总结
[嵌入式]STM32实现SPI双机通信的一些细节(2)SPI软硬件片选总结 SPI片选总结 坑爹的手册示意图 理想中的硬件片选 主机软件片选就对了 从机硬件片选 从机软件片选 代码 主机软件片选SPI ...
- SVPWM仿真和基于DSP28335的PIL(处理器在环) 仿真模型(将matlab仿真算法生成代码在DSP中在线运行返回数据给Matlab)验证算法可行性和实时性
SVPWM仿真和基于DSP28335的PIL(处理器在环) 仿真模型(将matlab仿真算法生成代码在DSP中在线运行返回数据给Matlab)验证算法可行性和实时性. 对于数字信号处理很有用. ID: ...
- 嵌入式实时操作系统μC/OS-Ⅱ 在DSP芯片上的移植与测试
[摘要]为了降低DSP 系统软件的开发难度,保证系统的实时性,缩短开发周期,将嵌入式实时操作系统μC/OS-Ⅱ移植到DSP 芯片中是目前比较常用的一种方法.本文介绍了嵌入式实时操作系统μC/OS-Ⅱ的 ...
- 嵌入式开发-STM32硬件SPI驱动TFT屏
嵌入式开发-STM32硬件SPI驱动TFT屏 这次用到的TFT屏 CubeMX设置 代码编写 增加的内容 需要注意问题 代码下载 这次用到的TFT屏 现在的TFT屏幕已经很便宜了,65536色屏幕,2 ...
最新文章
- React Native开发之必备React基础
- JavaScript 字符串连接性能比较
- win7 VS2008 编译luabind-0.9.1 动态库 静态库
- 第一阶段SCRUM冲刺-05
- sql系列(基础篇)-第一章 关于sysdate
- mysql中dint_mysql常用操作——数据库和表的操作1(共2页)
- 启动Tomcat时报错,一大堆的
- jQuery 5 条件选择器
- 微信公众号开发(一)配置服务器
- 【好看图标不用愁】吾爱万能软件ICO图标提取器
- 基于腾讯地图实现精准定位,实现微信小程序考勤打卡功能
- 李勇强seo,李勇强SEO
- java实验7 常用类的使用
- 【CMS建站】写给大家看的网站制作教程03—零基础学网站制作的简单入门指南...
- Nginx 的入门教程
- 迟到的总结图文-Hunter司务长
- ESP8266 下载报错please check partition type 6 addr:3fd000 len:3000
- 网络测试软件smartest,AGILENT-93K的混合信号测试解决方案
- [安卓开发笔记二]android Studio通过jni调用C++代码
- 单项选择的php代码,php单项选择提交,该如何处理