- /*
- A、名稱:加權遞推平均濾波法
- B、方法:
- 是對遞推平均濾波法的改進,即不同時刻的數據加以不同的權;
- 通常是,越接近現時刻的數據,權取得越大。
- 給予新采樣值的權系數越大,則靈敏度越高,但信號平滑度越低。
- C、優點:
- 適用于有較大純滯后時間常數的對象,和采樣周期較短的系統。
- D、缺點:
- 對于純滯后時間常數較小、采樣周期較長、變化緩慢的信號;
- 不能迅速反應系統當前所受干擾的嚴重程度,濾波效果差。
- E、整理:shenhaiyu 2013-11-01
- */
-
- int Filter_Value;
-
- void setup() {
- Serial.begin(9600); // 初始化串口通信
- randomSeed(analogRead(0)); // 產生隨機種子
- }
-
- void loop() {
- Filter_Value = Filter(); // 獲得濾波器輸出值
- Serial.println(Filter_Value); // 串口輸出
- delay(50);
- }
-
- // 用于隨機產生一個300左右的當前值
- int Get_AD() {
- return random(295, 305);
- }
-
- // 加權遞推平均濾波法
- #define FILTER_N 12
- int coe[FILTER_N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; // 加權系數表
- int sum_coe = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12; // 加權系數和
- int filter_buf[FILTER_N + 1];
- int Filter() {
- int i;
- int filter_sum = 0;
- filter_buf[FILTER_N] = Get_AD();
- for(i = 0; i < FILTER_N; i++) {
- filter_buf[i] = filter_buf[i + 1]; // 所有數據左移,低位仍掉
- filter_sum += filter_buf[i] * coe[i];
- }
- filter_sum /= sum_coe;
- return filter_sum;
- }
復制代碼
對比滑動平均濾波(遞推平均濾波)它的優勢是什么,看上去好像就靈敏度高了一些
|