时域积分

公式如下:

由于实际应用时传感器采样得到的点都是离散的,因此我们常常需要用到的是离散时域积分算法,对离散点的积分就是求和。

matlab实现积分算法:

% 积分
clc;
t=0:1/1000:0.2;        %时间向量,包含了10个周期
syms x
f=0.5*cos(100*pi*x);   %测试函数定义
x1=0.5*cos(100*pi*t);  %离散化处理
v=int(f);              %一次积分
x2=subs(v, t);         %用t置换表达式v中的自变量x后再赋给x2,此时x2即为保存了离散数据的数组subplot(1, 2, 1);
plot(t, x1);           %绘制原始数据波形
subplot(1, 2, 2);
plot(t, x2);           %绘制一次积分后的波形

输出波形:

MCU实现积分算法:

float Data_In[1024];
float Data_Out[1024];/*** 说明 : 一次积分运算* 参数 : in, 输入数据指针*        out, 输出数据指针*        len, 数据长度* 返回 : 无*/
void Integra_Handle(float* in, float* out, uint32_t len)
{float sum=0.0f;for(uint32_t i=0; i<len; i++){sum += in[i];out[i]=sum/1024.0f;        /*!< 除以采样率 */}
}/*** 说明 : 积分运算* 参数 : 无*        无* 返回 : 无*/
void Integral_App(void)
{/** 数据生成函数:生成1024个点 */for(uint32_t i=0; i<1024; i++){Data_In[i]=0.5f*arm_cos_f32(PI*2*i*50.0f/1024.0f);              }  /** 积分算法 */Integra_Handle(Data_In, Data_Out, 1024);/** 打印原始波形和积分后的波形 */for(uint32_t i=0; i<1024; i++){printf("%f, %f\n", Data_In[i], Data_Out[i]);}
}

输出波形:

原始波形:

积分后波形(采样率:1024):

积分后波形(采样率:3000):

结论:

从上面的波形可以看出离散积分算法得到的波形和理论的存在误差,采样率1024时的幅度0.001828和实际的0.001592差很多,相位差的不是很多,产生此现象的原因是离散化程度不够高导致的,要想减小此误差需要减小离散间隔,即增加采样率。

基于C语言实现离散时域积分算法相关推荐

  1. c语言通用数据结构和常用算法库,基于C语言的通用数据结构和算法库

    本人最近在学习数据结构的课程,在过程中发现用C语言来实现各种数据结构类型的时候很难做到真正意义上的通用的数据结构,于是在网上搜罗了一些所谓的C语言通用数据结构库,在此也将这些数据结构库一一罗列,方便大 ...

  2. 基于C语言,详解Kruskal算法(利用并查集)实现构建最小生成树

    目录 一.Kruskal算法的基本介绍 具体做法:找出森林中连接任意两棵树的所有边中,具有最小权值的边,如果将它加入生成树中不产生回路,则它就是生成树中的一条边.这里的关键就是如何判断"将它 ...

  3. matlab时域分析论文,基于Matlab语言的数字信号时域相关性研究与分析.doc

    摘要:针对在工程测试信号处理过程中广泛存在的信号之间的相关性问题,本文将研究和分析信号之间不同形式的相关关系以及信号在时域中的相关性.从而揭示了信号间关联程度的内在规律.通过举出实例来展示信号相关分析 ...

  4. 基于Java语言的一次性动态口令算法TOTP

    import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.s ...

  5. 基于Java语言的面对对象进阶算法练习

    主要是对面向对象基础的进一步拓展,对private,static,this等关键字的熟练掌握. 文章目录 一,编写一个类Task,代表GTA5的主线任务. 1.问题 2.代码 3.效果截图 二,通过类 ...

  6. C语言LMS双麦克风消噪算法,基于两个时域LMS算法双麦克风系统分析.doc

    基于两个时域LMS算法双麦克风系统分析 基于两个时域LMS算法双麦克风系统分析 [摘要] 本文介绍了基于两个时域LMS算法的双麦克风系统结构以及性能分析.本文提出一种采用两个时域LMS的算法,并将此算 ...

  7. 2020最佳双人博弈对抗方法 | 基于强化学习对手建模的滚动时域演化算法「AI核心算法」...

    关注:耕智能,深耕AI脱水干货 作者:唐振韬  报道:深度强化学习 CASIA 转载请联系作者 前言 格斗游戏是一项极具挑战的双人实时对抗人工智能博弈任务,常具有组合动作空间规模大.角色属性风格多样. ...

  8. c语言贝叶斯分类,基于朴素贝叶斯分类器的文本分类算法(C语言)

    基于朴素贝叶斯分类器的文本分类算法(C语言) 基于朴素贝叶斯分类器的文本分类算法(C语言).txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情.#include ...

  9. c语言排序算法 应用与实现,基于C语言排序算法改进与应用.doc

    基于C语言排序算法改进与应用 基于C语言排序算法改进与应用 摘 要:介绍了程序语言中排序的原理及应用,阐述了基于C语言的三种主要排序方法,提出了每种排序方法的改进,计算出改进后算法的时间复杂度,编写了 ...

最新文章

  1. windows编辑好的python代码在linux的vim编辑,缩进问题
  2. 2021 年大厂面试高频架构题汇总(附答案详解)
  3. 统计学原理----描述性统计
  4. StrategyPattern--策略模式java实现
  5. iOS逆向之深入解析如何Hook所有+load方法及Category的处理
  6. Scala与Java差异(五)之Map与Tuple
  7. 前端学习(1770):前端调试之如何参照站点的manifest
  8. c++ 正则表达式_Java入门 - 语言基础 - 18.正则表达式
  9. Python变量和字符串详解
  10. 学习使用Django一 安装虚拟环境
  11. 硕士论文要不要附matlab程序,论文必须要有附录吗_毕业论文附录一定要写吗_毕业论文中附录是不是必须要写的...
  12. 【渝粤题库】广东开放大学 金融经济学 形成性考核
  13. 百度云盘上传有大小限制 微信文件上传有大小限制 怎么破?
  14. 潇洒郎: windows、centos学习Influxdb下载安装 重置用户、密码 influx语法 数据写入与读取、查询 修改默认启动端口
  15. next在java中是什么意思_java中next是什么意思
  16. 每日搞笑段子API接口,免费好用
  17. win10镜像无法再此计算机上运行,Win10安装镜像提示运行此工具时出现问题如何解决...
  18. 获两大A股龙头加持,掌上辅材能否成为中国版“家得宝”?
  19. 家庭成员介绍html模板,幼儿园介绍家庭成员教案
  20. 大熊代码jsddkjah大全

热门文章

  1. 台式计算机进入安全模式蓝屏,电脑蓝屏不能进入安全模式的解决方法
  2. 一种下载Nvidia旧版本显卡驱动的方法(在知道版本号的前提下)
  3. svn: E155007: 'XXX' is not a working copy
  4. html上上上级目录,html如何表示上级目录
  5. gorm增删查改json_go基于echo、gorm实现增删改查,从请求到落库
  6. 『Java』文件与IO流
  7. Java基础之IO流(三)
  8. 【历史上的今天】1 月 20 日:Scala 问世;苹果低谷期的开始;专家系统之父诞生
  9. python英文发音-利用Python制作查单词小程序(二):下载音频并播放单词读音
  10. 深入探索Win32结构化异常处理