计算均值滤波时,需要每次求数组的和,再求均值,一般先放入一个数组,循环移出最后一个旧的值循环移入新的值

一般原来的做法

/******************************************************************************/

/**

* @param[in] data[3] 每次处理一组三维的数据,每个数据都需要均值滤波

* fifo:中间存数据的数组三维数组,在使用前定义

* len: N个值的均值滤波,比如len=5,代表5个点取一个均值

* output:均值滤波后的数据,三维的

* idx:均值滤波后的值对应的下标

* @return

*

*

*******************************************************************************/

void AvgFilter1(float data[3], float fifo[][FILTER_SIZE], int len, float output[][BUF_SIZE], int idx)

{

float sum1, sum2, sum3;

uint8_t i;

//mexPrintf("%d", data[1]);

for (i = 1; i < len; i++)

{

fifo[0][i - 1] = fifo[0][i];

fifo[1][i - 1] = fifo[1][i];

fifo[2][i - 1] = fifo[2][i];

}

fifo[0][len - 1] = data[0];

fifo[1][len - 1] = data[1];

fifo[2][len - 1] = data[2];

sum1 = 0;

sum2 = 0;

sum3 = 0;

for (i = 0; i < len; i++)

{

sum1 += fifo[0][i];

sum2 += fifo[1][i];

sum3 += fifo[2][i];

}

output[0][idx] = (sum1 / len);

output[1][idx] = (sum2 / len);

output[2][idx] = (sum3 / len);

//mexPrintf("output:\n");

if (idx== BUF_SIZE)

{

for (i=0;i

可以修改为新的做法

/******************************************************************************/

/** SIZE: 相当于len, 均值滤波的个数

* @param[in] deal with data one by one and get the average

* data: three axis' data

* fifo: Cache intermediate data

* len: the length of average's data

* output: output of average's data

* @return

*

*

*******************************************************************************/

void AvgFilter(float data[3], float fifo[][SIZE], float output[][BUF_SIZE], int idx)

{

/* filter_buff, FILTER_SIZE */

static uint8_t data_index = 0;

static float sum_x=0, sum_y=0, sum_z=0;

float fir_x, fir_y, fir_z;

uint8_t fir_pos;

/* find the index-9' data */

fir_x = fifo[0][data_index];

fir_y = fifo[1][data_index];

fir_z = fifo[2][data_index];

fifo[0][data_index] = data[0];

fifo[1][data_index] = data[1];

fifo[2][data_index] = data[2];

data_index = (data_index + 1) % SIZE;

sum_x += data[0];

sum_y += data[1];

sum_z += data[2];

sum_x -= fir_x;

sum_y -= fir_y;

sum_z -= fir_z;

output[0][idx] = (sum_x / SIZE);

output[1][idx] = (sum_y / SIZE);

output[2][idx] = (sum_z / SIZE);

}

这样运算量大大减少,将数据存放到一个数组组成的环形buffer中,每次取当前index的前一个value[index],在sum和中减去value,再加上新的数据,即为当前数组的数据和,再求均值。

c语言均值滤波程序,均值滤波C语言代码实现的一种简单方式相关推荐

  1. c语言低通滤波程序,一阶低通滤波器c语言

    1. 一阶滤波算法的原理 一阶滤波,又叫一阶惯性滤波,或一阶低通滤波.是使用软件编程实现普通硬件RC低通滤波器的功能. 一阶低通滤波的算法公式为: Y(n)=αX(n) (1-α)Y(n-1) 式中: ...

  2. c语言第一次作业程序题pta,c语言第一次作业程序题pta

    c语言第一次作业程序题pta 5-1 统计学生平均成绩与及格人数 (15 分)本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于 60 分)的人数.题目保证输入与输出均在整型范围内.输入格 ...

  3. C语言的延时程序怎么改,C语言延时子程序准确设置

    在给单片机写程序的时候往往需要一个微秒或者毫秒的延时子程序,但是C语言不同于汇编,很难根据语句确定准确的延时时间,经过各种查资料得到一种简单实用的方法:通过keil下断点调试确定时间. 就是编写一个延 ...

  4. c语言开发窗口程序,怎么用c语言做一个界面?

    https://m.zjurl.cn/answer/6697137038547747083/?app=news_article&app_id=26&share_ansid=669713 ...

  5. 程序员如何发展第二职业?这几种副业方式超赚钱

    很多程序员曾表示,虽然月薪一两万,但有时候还是会焦虑. 尤其是遇上了年初裁员年底裁员这样的就业环境,焦虑就会逐步放大,这时候副业赚钱的重要性就体现出来了. 发展第二职业,可以让程序员们增加抗风险能力, ...

  6. python程序员如何发展第二职业?这几种副业方式超赚钱

    很多程序员曾表示,虽然月薪一两万,但有时候还是会焦虑. 尤其是遇上了年初裁员年底裁员这样的就业环境,焦虑就会逐步放大,这时候副业赚钱的重要性就体现出来了. 发展第二职业,可以让程序员们增加抗风险能力, ...

  7. c语言均值滤波程序,均值滤波和均值滤波算法程序

    描述 均值滤波 均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像 ...

  8. c语言程序设计学生程序查询,《c语言程序设计报告-学生信息管理系统》.doc

    <c语言程序设计报告-学生信息管理系统> 中南大学 ? ? C语言程序设计实践报告 ? ? ? ? ? 题 目 学生信息管理系统 学生姓名 张眼 指导教师 刘伟荣 学 院 信息科学与工程学 ...

  9. 小程序开发语言python_小程序是用什么语言开发的?5种最佳语言分享

    你应该学习哪种编程语言来探索AI的深度?当然,你会需要一个拥有许多优秀机器学习和深度学习库的语言.它还应具有良好的运行时性能,良好的工具支持,大量程序员社区以及健康的支持包生态系统.这仍然留下了很多不 ...

最新文章

  1. Facebook 开源高质量实例分割数据集 LVIS
  2. 七周七并发之线程与锁
  3. java将图片放进mysql中_在java代码中怎么从服务器上把图片拿来放到数据库里
  4. spring几种获取 HttpServletRequest 对象的方式
  5. windows 安装yaml支持和pytest支持等
  6. mysql innodb status_查看innodb的运行状态
  7. 【MOSS】快速调试Sharepoint站点
  8. java程序语言228_2019年Java面试题基础系列228道(5)
  9. linux下的文件系统,Linux根文件系统(“/”文件系统)下的目录介绍
  10. 得到当前python解释器的路径
  11. 关于CodeReview
  12. esri-leaflet入门教程(1)-leaflet介绍
  13. 推荐7 款实用好用的电脑软件
  14. 【北京迅为】i.MX6ULL终结者虚拟机安装Ubuntu系统
  15. 如何在网易云音乐上正常听周杰伦的歌曲
  16. XMind8破解版安装
  17. 爱快可以外接文件服务器吗,听说爱快路由器也支持NAS了?
  18. [Codeup]1814 问题 A: 剩下的树
  19. 【node】mac系统下升级node版本
  20. 【C#进阶二】C#中的正则表达式知识总结(字符转义/字符类/ 定位点/ 分组构造 /数量词/反向引用构造/替换构造/替代/正则表达式选项)(理论篇)

热门文章

  1. 【渝粤题库】广东开放大学 计算机应用基础(本) 形成性考核
  2. lora模块在牛联网和智慧农业中的应用案列
  3. DC/DC开关电源设计
  4. python怎么输入两行_python交互模式下输入换行/输入多行命令的方法
  5. ios realm 文件_关于ios:具有后台进程的Realm实例会丢失数据
  6. 【RS码1】系统RS码编码原理及MATLAB实现(不使用MATLAB库函数)
  7. 6000毫安以上智能手机_三星超长续航神机,6000毫安+128GB,上市半年不到跌至1499...
  8. pthread vs openMP之我见
  9. CIFAR和SVHN在各CNN论文中的结果
  10. linux中查找文件属于那个软件包的方法