Skip to content

分式加权移动平均滤波算法(Fractional Weighted Moving Average Filter)

License

Notifications You must be signed in to change notification settings

Simgor001/FWMA_Filter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FWMA_Filter

分式加权移动平均滤波算法(Fractional Weighted Moving Average Filter)

注意:作者是初学者,代码和思路仅供参考!

介绍

这是一种简易的滤波算法,使用FIFO进行加权求平均值。

  • 代码面向对象,支持计算多个滤波器
  • 请注意,这种滤波算法有滞后性,实时性很差,仅适合温度检测等领域使用

仓库目录

  • FWMA_Filter:库本体
  • Project:示范用例,主控为CH32V203

模拟

该算法预先使用Python实现,然后移植到C语言上,下面是模拟的效果

方波

模拟(方波)

线性

模拟(线性)

使用说明

下面的例子主控为CH32V203,配合CS1237读取数据,其他主控请参考修改。

CS1237库详情见此

使用流程

  • 设置队列长度FWMA_LEN
  • 调用FWMA_Init函数,设置存储地址和参数
  • 如果需要使用完整的滤波器,请调用FWMA_filter函数
  • 如果仅使用中值滤波,请调用FWMA_median函数

参数说明

有以下几种参数:

  • FWMA_LEN:队列长度(默认为5)
  • pres:上次结果权
  • af:衰减系数
  • data_min:数据范围最小值
  • data_max:数据范围最大值

参数:pres

上次结果权,控制前一次计算结果对当前计算结果的影响程度,值越大,前一次计算结果对当前结果的影响越大,反应越慢,数据越平滑。

参数:af

衰减系数,数值越小,输出结果更敏感于新数据的变化,但对噪声的去除效果可能会降低。较小的衰减系数适用于需要更快响应的实时应用。

初始化用例

FWMA_InitTypeDef FWMA_InitStruct;
FWMA_InitStruct.data_max = 2.5;
FWMA_InitStruct.data_min = 0;
FWMA_InitStruct.pres = 1;
FWMA_InitStruct.af = 2;
FWMA_t FWMA_s;
double FWMA_fifo[FWMA_LEN] = {0};
double FWMA_buf[3] = {0};

FWMA_Init(&FWMA_s, FWMA_fifo, FWMA_buf, &FWMA_InitStruct);

实际效果

直流

直流

锯齿波

锯齿波

开发使用的工具

MounRiver

安信可串口调试助手

serial_port_plotter

About

分式加权移动平均滤波算法(Fractional Weighted Moving Average Filter)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages