fonction pour exclure des valeurs

Bonjour ,
je cherche une méthode pour ,par exemple ,sur un jeu de 8 capteurs exclure les valeurs max et min , donc exclure les valeurs extrêmes de mon jeu de données pour ensuite faire une moyenne sur 6 capteurs.

Existe t il un moyen simple ou encore mieux une fonction pour réaliser ceci.

J'ai bien les fonctions max et min mais elles ne comparent que deux nombres ....

merci à tous .

Salut,

La fonction de pepe est super.

Je simplifie la recherche des index mini et maxi ainsi (toujours dans un tableau de float) :

/*
Trouver le min et max dans un tableau
*/

int index_min, index_max;
float tableau[8] = {12.5, 13.5, 14.5, 14.5, 15.5, 16.7, 11.1, 9.107};

void setup()
{
  Serial.begin(9600);
  delay(500);
}

void loop()
{
  for (int i = 1; i < 8; i++)
  {
    if (tableau[i] > tableau[i-1]) { index_max = i; }
    if (tableau[i] < tableau[i-1]) { index_min = i; }
  }
  Serial.print("Valeur mini : ");
  Serial.println(tableau[index_min]);
  Serial.print("Valeur maxi : ");
  Serial.println(tableau[index_max]);
  delay(1000);
}

On peut ainsi conserver le tableau tel quel et remplacer les valeurs mini et maxi du tableau par de nouvelles données, les exclure dans une autre boucle et comparer les moyennes, les affiner, etc.

@+

Zoroastre.

super !!
merci à tous
je teste ça dans mon programme ....
bonne soirée

Tiens j'ajoute mon grain de sel, avec une autre proposition à tester :stuck_out_tongue:

float moyenne6mesures( float *tableau8mesures )
{
  float mesureMin, mesureMax, somme;

  somme = mesureMin = mesureMax = tableau8mesures[0];
  for (int i=1; i<8; i++) {
    if (tableau8mesures[i]>mesureMax) mesureMax = tableau8mesures[i];
    if (tableau8mesures[i]<mesureMin) mesureMin = tableau8mesures[i];
    somme += tableau8mesures[i];
  }
  return (somme - (mesureMin + mesureMax)) / 6;
}

Oups!

pepe:
Attention, ce code ne trouve que les derniers extremums locaux.

Merci pour la correction. Avec mon tableau, de tête, ça passait bien :grin:

@+

Zoroastre.