电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

397

主题

397

帖子

2463

积分

三级会员

Rank: 3Rank: 3

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

htpkzbult1p64029375956.png

htpkzbult1p64029375956.png
: |& g5 {0 j- }4 ^* b- A

  P8 I1 R2 L+ f7 ]5 a7 m移动平均滤波是一种简单有效的平滑信号的方法,它通过计算一系列数据点的平均值来减小信号中的波动。基本的移动平均滤波方法有两种:简单移动平均(SMA)和指数加权移动平均(EWMA)。. ]% N5 p+ d1 ?5 e- v' ^$ \9 C
简单移动平均滤波(SMA)的原理:简单移动平均滤波通过计算一定窗口内数据点的平均值来平滑信号。窗口的大小决定了滤波器对信号的平滑程度,窗口越大,平滑效果越明显。对于第n个数据点(X_n),其简单移动平均值(SMA_n)可以计算为:
7 v) q. u, J* h0 ~
2 L4 [: R5 ~7 Y

tajefatlb2y64029376056.png

tajefatlb2y64029376056.png
' {  h* F8 j9 S4 T2 D3 @* B
% x2 `0 }9 K9 y: v! E# Y- }  W' \9 K2 M
其中,K是窗口大小。
. C( p+ B. o5 |5 c' S/ {8 A% m简单移动平均滤波的C代码示例:以下是一个简单移动平均滤波的C代码示例,假设输入数据存储在数组中:0 M  c  M1 D. q" D5 B
  • #include 0 l7 n/ v2 ^  r" x& f
    #define WINDOW_SIZE 5
    & o8 z9 Y  D/ t. s& S% k6 M% _& X$ z// 函数原型float simpleMovingAverage(float data[], int dataSize);
    ; j  b* s: k$ x3 Z' I( t6 q' Fint 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]);; I; \4 M0 |9 I! K2 X* `5 Y
        // 计算简单移动平均    float result = simpleMovingAverage(inputData, dataSize);+ c* f  [: R9 ]
        // 打印结果    printf("Simple Moving Average: %f3 H/ x# D: \. J6 T8 Z: }4 F
    ", result);
    ! c+ m, M* W5 Z6 z. i" U    return 0;}
    % q7 l9 M1 t% o6 j( Q8 v2 a; F& ~// 计算简单移动平均float simpleMovingAverage(float data[], int dataSize) {    float sum = 0.0;+ L# P1 N0 a2 Z4 _% S6 h" m
        // 计算窗口内数据的和    for (int i = 0; i         sum += data;    }- j" }  q1 e; C3 X$ D1 a) C
        // 计算移动平均值    float movingAverage = sum / WINDOW_SIZE;
    $ p5 E. Z2 X, d8 a/ n7 ]    // 返回结果    return movingAverage;}在这个示例中,WINDOW_SIZE 定义了移动平均的窗口大小,可以根据需要调整。simpleMovingAverage 函数用于计算输入数据的简单移动平均值。这只是一个基本的示例,实际应用中可能需要根据具体需求进行调整和优化。
    ! H0 V* M0 I9 U, z
    % H1 X9 o, H! m/ X  S$ \$ h==========
    2 T4 L" r7 q' Z4 q& e/ i往期回顾:Keil仿真调试STM32与LED; ?, l, P$ p, w; I
    STM32的看门狗原理和示例代码
    6 z" |- o3 K0 r  B& MHAL库常用函数汇总【不间断更新】8 l* w* y5 w6 q! `- T( f' ]
    【通知】蓝桥杯付费视频预售来袭~==========2 Q3 [1 a' s/ H* |/ J: L

    ; l6 q7 {0 o$ t& i/ D& P$ q

    maqsvkjjgve64029376156.png

    maqsvkjjgve64029376156.png

    ( k2 Y4 ?0 k& E; e4 N' k- Z/ E
    6 m" \  X, z9 \& @6 ^) r

    2kbepceoatm64029376256.png

    2kbepceoatm64029376256.png
    ) V- m$ X4 Y2 y; W- v6 e1 y
    " R/ @: J: ]: e% s+ ~7 m

    lxqj3sjy0xj64029376357.png

    lxqj3sjy0xj64029376357.png
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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