[开发工具] 简易均值滤波器

[复制链接]
827|10
 楼主| gygp 发表于 2023-3-31 12:00 | 显示全部楼层 |阅读模式
均值滤波器就是取多个连续的数据,进行算术平均运算,得出输出数据;

为了简化运算,本文演示代码使用2的整数次幂进行算术平均运算,因为这种情况可以通过移位的方式来代替除法。

以下是滤波器定义的头文件:
  1. #ifndef __FILTER_H
  2. #define __FILTER_H

  3. struct filter
  4. {
  5.     int buff[32]; //最大支持32级均值,可根据需要改为更大的值。
  6.     int order;
  7.     int shift;
  8.     int sum;
  9.     int index;
  10. };

  11. typedef struct filter filter_t;

  12. //初始化滤波器,order指定滤波常数,必须是2的N次方(1,2,4,8,16...)
  13. void filter_init(filter_t *flt, int order);

  14. //滤波函数,value输入待滤波的数据,返回滤波后的数据
  15. int  filter_input(filter_t *flt, int value);

  16. //复位滤波器
  17. void filter_reset(filter_t *flt);

  18. #endif
  1. /*
  2. * 均值滤波器
  3. * 蒋晓岗<kerndev@foxmail.com>
  4. */
  5. #include <string.h>
  6. #include "filter.h"

  7. //均值滤波器
  8. int filter_input(filter_t *flt, int value)
  9. {
  10.     flt->sum += value;
  11.     flt->sum -= flt->buff[flt->index];
  12.     flt->buff[flt->index] = value;
  13.     flt->index = (flt->index + 1) & (flt->order - 1);
  14.     return (flt->sum >> flt->shift);
  15. }

  16. //均值滤波器
  17. void filter_init(filter_t *flt, int order)
  18. {
  19.     flt->index = 0;
  20.     flt->sum   = 0;
  21.     flt->order = order;
  22.     flt->shift = 0;
  23.     while(order > 1)
  24.     {
  25.         flt->shift++;
  26.         order >>= 1;
  27.     }
  28. }

  29. //复位
  30. void filter_reset(filter_t *flt)
  31. {
  32.     flt->index = 0;
  33.     flt->sum   = 0;
  34.     memset(flt->buff, 0, sizeof(flt->buff));
  35. }


Clyde011 发表于 2024-4-15 07:16 | 显示全部楼层

要把纹波电流平均分布
公羊子丹 发表于 2024-4-15 08:09 | 显示全部楼层

发射出过量的电磁干扰(EMI)
万图 发表于 2024-4-15 09:12 | 显示全部楼层

典型的转换时间大约是50ns
Uriah 发表于 2024-4-15 10:15 | 显示全部楼层

这种方法可以使散热体积和表面面积增大两倍多
帛灿灿 发表于 2024-4-15 12:11 | 显示全部楼层

负载环能以直流方式汲取能量
Bblythe 发表于 2024-4-15 13:14 | 显示全部楼层

功率开关漏极(或集电极)
周半梅 发表于 2024-4-15 15:10 | 显示全部楼层

输出整流器交流电流环路
Pulitzer 发表于 2024-4-15 16:13 | 显示全部楼层

在其他的交流电流环路都布置好后再放置
童雨竹 发表于 2024-4-15 18:09 | 显示全部楼层

任何与多条功率线相连的功率器件要尽可能紧挨在一起,以减短连线长度
Wordsworth 发表于 2024-4-15 19:12 | 显示全部楼层

工作时的电压降低了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

207

主题

8524

帖子

16

粉丝
快速回复 在线客服 返回列表 返回顶部