1233
Dependencies: cJSON_lib mcp2515- mbed-dev-f303 esp8266 yezhong_main_controller_copy_3
MA/Moving_Average.cpp@0:e923de71caa5, 2022-06-24 (annotated)
- Committer:
- yezhong
- Date:
- Fri Jun 24 07:58:26 2022 +0000
- Revision:
- 0:e923de71caa5
111111
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yezhong | 0:e923de71caa5 | 1 | #include "mbed.h" |
yezhong | 0:e923de71caa5 | 2 | #include "Moving_Average.h" |
yezhong | 0:e923de71caa5 | 3 | |
yezhong | 0:e923de71caa5 | 4 | |
yezhong | 0:e923de71caa5 | 5 | |
yezhong | 0:e923de71caa5 | 6 | // Source是不断变化的 |
yezhong | 0:e923de71caa5 | 7 | float Moving_Average(unsigned int NN, float *FILTER, float Source) |
yezhong | 0:e923de71caa5 | 8 | { |
yezhong | 0:e923de71caa5 | 9 | |
yezhong | 0:e923de71caa5 | 10 | float AVER = 0.0f; |
yezhong | 0:e923de71caa5 | 11 | float SUM = 0; |
yezhong | 0:e923de71caa5 | 12 | unsigned char i; |
yezhong | 0:e923de71caa5 | 13 | |
yezhong | 0:e923de71caa5 | 14 | |
yezhong | 0:e923de71caa5 | 15 | FILTER[NN] = Source; // 将接受到的数据放在均值滤波数组的“最后(倒数第2个)”元素里面 |
yezhong | 0:e923de71caa5 | 16 | |
yezhong | 0:e923de71caa5 | 17 | |
yezhong | 0:e923de71caa5 | 18 | // 把第一次进入的 Source 赋值给 FILTER[0] ~ FILTER[N-1] |
yezhong | 0:e923de71caa5 | 19 | if(FILTER[NN+1] == 0) // FILTER[N+1]等于0,表示第一次进入该函数 |
yezhong | 0:e923de71caa5 | 20 | { |
yezhong | 0:e923de71caa5 | 21 | for(i = 0; i < NN; i++) |
yezhong | 0:e923de71caa5 | 22 | { |
yezhong | 0:e923de71caa5 | 23 | FILTER[i] = Source; |
yezhong | 0:e923de71caa5 | 24 | } |
yezhong | 0:e923de71caa5 | 25 | |
yezhong | 0:e923de71caa5 | 26 | FILTER[NN+1] = 1; // 设置标记,已经进入过该函数,以后不再全部赋值 |
yezhong | 0:e923de71caa5 | 27 | } |
yezhong | 0:e923de71caa5 | 28 | |
yezhong | 0:e923de71caa5 | 29 | |
yezhong | 0:e923de71caa5 | 30 | for(i = 0; i < NN; i++) |
yezhong | 0:e923de71caa5 | 31 | { |
yezhong | 0:e923de71caa5 | 32 | FILTER[i] = FILTER[i + 1]; |
yezhong | 0:e923de71caa5 | 33 | SUM += FILTER[i]; |
yezhong | 0:e923de71caa5 | 34 | } |
yezhong | 0:e923de71caa5 | 35 | |
yezhong | 0:e923de71caa5 | 36 | AVER = SUM / NN; |
yezhong | 0:e923de71caa5 | 37 | SUM = 0; |
yezhong | 0:e923de71caa5 | 38 | |
yezhong | 0:e923de71caa5 | 39 | return AVER; |
yezhong | 0:e923de71caa5 | 40 | } |