/*
Average use Median [Sort the data array]
การเรียงลำดับข้อมูล (sorting) และหาค่า median ซึ่งสามารถให้ผลลัพธ์ที่ดีกว่าในกรณีที่มีค่าที่ผิดปกติมาก
*/
const int numReadings = 8;
int readings[numReadings];
void setup() {
Serial.begin(9600);
}
void loop() {
// Take 10 readings
for (int i = 0; i < numReadings; i++) {
readings[i] = analogRead(A0);
delay(100); //************* 10
Serial.print(readings[i]); Serial.print("/");
}
Serial.println();
// Sort the array ******************************
for (int i = 0; i < numReadings; i++) { //****numReadings - 1;
for (int j = i + 1; j < numReadings; j++) {
if (readings[i] > readings[j]) {
int temp = readings[i];
readings[i] = readings[j];
readings[j] = temp;
}
}
Serial.print(readings[i]); Serial.print("/");
}
Serial.println();
// Find the median
float median;
if (numReadings % 2 == 0) { // *** 10%2 = 0
median = (readings[numReadings / 2 - 1] + readings[numReadings / 2]) / 2.0; // ***
} else {
median = readings[numReadings / 2]; // *** 11/2 >5.5 == [6]
}
// Print the result
Serial.print("Median: ");
Serial.println(median);
delay(100);
}
/*
ค่าเฉลี่ยและค่ามัธยฐานเป็นการวัด "แนวโน้มกลาง" ทั้งคู่ โดยมีวัตถุประสงค์เพื่อระบุค่าทั่วไปหรือค่ากลางของชุดข้อมูล
ค่าเฉลี่ยจะคำนวณโดยการรวมค่าแต่ละค่าแล้วหารผลรวมด้วยจำนวนการสังเกต ค่ามัธยฐานจะคำนวณโดยใช้ค่า "กลาง"
ซึ่งเป็นค่าที่การสังเกตครึ่งหนึ่งมีค่ามากกว่าและอีกครึ่งหนึ่งมีค่าน้อยกว่า
*/