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