• Home
  • pcDuino
  • WiKi
  • Store
  • Distributors
  • Home
  • pcDuino
  • WiKi
  • Store
  • Distributors
HomeProgramming LanguagesCMedian filtering method for pcDuino/Arduino (2)
Previous Next

Median filtering method for pcDuino/Arduino (2)

Posted by: admin , June 10, 2014

Method

Take the samples for n times in a row (n get the odd), arrange the sample values by the size, and set the intermediate values as the valid values.

Pro:

It can effectively overcome wave interference due to causal factors, and the filtering effect of the measured parameters about the slow changes of temperature, liquid level are good.

Con:

For rapidly changing parameters such as flow, speed, it would not be appropriate.

Test code

int Filter_Value; 
  
void setup () {
   Serial.begin (9600); / / initialize the serial communication 
   randomSeed (analogRead (0)); / / random seed 
} 
  
void loop () {
   Filter_Value = Filter (); / / get the filter output value 
   Serial.println (Filter_Value); / / serial output 
   delay (50); 
} 
  
/ / Used to randomly generate a current value of around 300 
int Get_AD () {
   return random (295, 305); 
} 
  
/ / Median filtering method 
# define FILTER_N 101 
int Filter () {
   int filter_buf [FILTER_N]; 
   int i, j; 
   int filter_temp; 
   for (i = 0; i <FILTER_N; i + +) {
     filter_buf [i] = Get_AD (); 
     delay (1); 
   } 
   / / Sample values ​​in ascending order (Bubble Act) 
   for (j = 0; j <FILTER_N - 1; j + +) {
     for (i = 0; i <FILTER_N - 1 - j; i + +) {
       if (filter_buf [i]> filter_buf [i + 1]) {
         filter_temp = filter_buf [i]; 
         filter_buf [i] = filter_buf [i + 1]; 
         filter_buf [i + 1] = filter_temp; 
       } 
     } 
   } 
   return filter_buf [(FILTER_N - 1) / 2];

Tags: C

Share!
Tweet

admin

About the author

Leave a Reply Cancel reply

You must be logged in to post a comment.

Category

  • Home
  • pcDuino
  • WiKi
  • Store
  • Distributors