Récupérer le rang i dans une boucle for

kamill:
Bonjour,

Il faut déjà revoir ton algorithme de recherche des min et max.

Ensuite il suffit de mémoriser i dans une variable (par exemple imin1 et imax1 ) quand tu mémorise min1 et max1.

Est tu sur que les max/min soient univoques?
Souvent les mesures ont du bruit il y a des max provisoires...

Voici un code qui fonctionne bien chez moi:

if (A0Byte > Treshold && ATpointer < 394)
{ // Detection of Events Above Treshold, that must last for at least Duration and max 3xDuration
  // Find maximum value and record corresponding time.
  ATDuration ++;
  if (A0Byte > ATMax)
    {
      ATMax = A0Byte;
      AThour = hour;
      ATmin = minute;
      ATsec = second;
    }
  }
  else // At the end of the event categorize it
  {
    if (ATDuration > Duration && ATDuration < 3 * Duration)
    {
      // record event data in Array
      filbuff4[ATpointer] = AThour;
      ATpointer ++;
      filbuff4[ATpointer] = ATmin;
      ATpointer ++;
      filbuff4[ATpointer] = ATsec;
      ATpointer ++;
      filbuff4[ATpointer] = ATMax; // Maximum
      ATpointer ++;
      filbuff4[ATpointer] = ATDuration;
      ATpointer ++;
      ATDuration = 0;
      if (ATMax > NAT1) nNAT1 ++;
      if (ATMax > NAT2) nNAT2 ++;
      if (ATMax > NAT3) nNAT3 ++;
    }
    else
    {
      // drop event
      ATDuration = 0;
      ATMax = 0;
    } // end if/else duration
  } // end if/else above treshold

Je classe tous les max dans un array avec l'heure, le maximum et la durée.

Il y a des conditions supplémentaires:
le max doit durer au moins x et moins de 3x et
l'évènement doit être supérieur a une limite inférieure.

J'attends de repasser par la limite inférieure avand d'enregistrer l'évènement,