电子产业一站式赋能平台

PCB联盟网

搜索
查看: 52|回复: 0
收起左侧

移动平均滤波的原理和C代码

[复制链接]

395

主题

395

帖子

2304

积分

三级会员

Rank: 3Rank: 3

积分
2304
发表于 2023-12-3 21:01:00 | 显示全部楼层 |阅读模式

htpkzbult1p64029375956.png

htpkzbult1p64029375956.png

& \. C+ l- F9 l
7 J- Q+ g! k4 Z) L3 k2 k移动平均滤波是一种简单有效的平滑信号的方法,它通过计算一系列数据点的平均值来减小信号中的波动。基本的移动平均滤波方法有两种:简单移动平均(SMA)和指数加权移动平均(EWMA)。
2 T5 D; e& M3 z% I简单移动平均滤波(SMA)的原理:简单移动平均滤波通过计算一定窗口内数据点的平均值来平滑信号。窗口的大小决定了滤波器对信号的平滑程度,窗口越大,平滑效果越明显。对于第n个数据点(X_n),其简单移动平均值(SMA_n)可以计算为:
+ j$ w7 ^. M# ^' q& ~, u4 g& t! [6 q3 W" v/ E6 j: K

tajefatlb2y64029376056.png

tajefatlb2y64029376056.png

8 v+ B  e1 I$ w* a% I; L  r7 C; @) E* f. I* Q: \- x6 R
其中,K是窗口大小。
, j0 @& v- y$ h: R8 f7 Z* ?3 _$ F; y7 u简单移动平均滤波的C代码示例:以下是一个简单移动平均滤波的C代码示例,假设输入数据存储在数组中:/ b9 ^# R/ j2 h
  • #include
    . }# Y* y$ B# [" y+ [4 @3 \1 f#define WINDOW_SIZE 5
      t2 ]! `3 V# J, ^; T, o// 函数原型float simpleMovingAverage(float data[], int dataSize);- _* I6 l+ p; c2 I7 B
    int main() {    // 输入数据    float inputData[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};    int dataSize = sizeof(inputData) / sizeof(inputData[0]);; v/ ~3 I5 N7 y, T% W
        // 计算简单移动平均    float result = simpleMovingAverage(inputData, dataSize);% _3 Q& b/ y: ^% b8 f6 a- E
        // 打印结果    printf("Simple Moving Average: %f
    4 }# r& _! j/ j' q* {% p5 r", result);
    * c# l& p; D: I9 c# Z2 |    return 0;}& i. d3 n" a' L) `
    // 计算简单移动平均float simpleMovingAverage(float data[], int dataSize) {    float sum = 0.0;$ `: n0 v3 H, \  v0 m7 P& l& {
        // 计算窗口内数据的和    for (int i = 0; i         sum += data;    }2 L& c9 b, j3 p& i! M. K' {& u
        // 计算移动平均值    float movingAverage = sum / WINDOW_SIZE;& w" [. w, u6 W2 N- D7 A9 G
        // 返回结果    return movingAverage;}在这个示例中,WINDOW_SIZE 定义了移动平均的窗口大小,可以根据需要调整。simpleMovingAverage 函数用于计算输入数据的简单移动平均值。这只是一个基本的示例,实际应用中可能需要根据具体需求进行调整和优化。- V8 Y# N. ]. r6 K, d  y, f8 j6 E
    * W& A0 w- `* m( n" f
    ==========
    / r  u# E& |) V$ A7 [( D往期回顾:Keil仿真调试STM32与LED
    8 k# R. x, z5 D+ d9 L7 e/ a* iSTM32的看门狗原理和示例代码$ ?' O# T4 e, f: |' \8 m' b
    HAL库常用函数汇总【不间断更新】/ `" ?7 o$ R: [6 o  F/ A. x. y& }
    【通知】蓝桥杯付费视频预售来袭~==========9 [. ~: S' `9 ~! g! ^

    4 l, Q3 ?, U+ J  V8 q  c! Y6 Z

    maqsvkjjgve64029376156.png

    maqsvkjjgve64029376156.png

    $ j( J4 O8 X# c; l
    , {0 l# ]; r6 i* }0 R: S6 m

    2kbepceoatm64029376256.png

    2kbepceoatm64029376256.png
    , T" x9 \$ _1 [. F9 k% q+ |
    5 \; z1 ?; }9 y$ {; d

    lxqj3sjy0xj64029376357.png

    lxqj3sjy0xj64029376357.png
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表