detection de crete( mini maxi..)

detection de crete( mini maxi..) - VB/VBA/VBS - Programmation

Marsh Posté le 18-11-2002 à 09:56:36    

j'aimerai un algo ou un code(VB), pour detecter et "stocker" les mini et maxi d'une sinusoide ... et ensuite reperer les depassement de ces cretes...
 
Merci..

Reply

Marsh Posté le 18-11-2002 à 09:56:36   

Reply

Marsh Posté le 18-11-2002 à 11:26:18    

La sinusoïde est mathématique ou lue sur un port/récupérée dans un fichier ?
 
Les dépassements, c'est dans d'autres données qu'on veut les détecter ? Sinon, faudrait faire traitement statistique ou déconvoluer sinusoïde dans les données si les "écarts" sont internes.
 [:tomilou]

Reply

Marsh Posté le 18-11-2002 à 13:11:47    

c des donnée recupérée... c d'ailleur pas forcement une sinusoide parfaite..!!
les dpassement c le smemes données..enfin meme serie de donnée..

Reply

Marsh Posté le 18-11-2002 à 15:09:44    

Trouver les min et max de données, c'est facile. On précharge le mini avec valeur très grande, on précharge max avec valeur très négative (le plafond de la variable, - ValMin souvent), ensuite on compare un par un. A la fin on a ValMin et ValMax.
De là en déduire des "sauts" au dessus du maxi habituel le plus courant, à vérifier si on a un signal périodique, .. ca devient sioux.
 
Si on a 9 "sinusoîdes idéales" et une avec excès d'amplitude, le mimi/maxi prendra ce maxi là.
Si on a un autre signal qui devrait être idem au précédent mais avec des "pointes", on cherche ses mini/maxi et compare au précédent.
 
Faudrait préciser un peu le contexte, le pb. Mini/maxi facile, dans l'absolu mais peut-être pas pour le besoin potentiel.

Reply

Marsh Posté le 18-11-2002 à 15:37:06    

le truc exact ...
j'ai une serie de point dans l'aébsolue ça devrai etre plus ou moins sinusoidale...
sur pas mal de periode c'est constant pis au bout d'un moment l'amplitude va augmentetr significativement donc les mini maxi vont augmenter et je dois reperer ça... donc je dois en continu extrair le point max et min et comparer par raport a max-1 et min -1 si c superieur de 10% (ça je vais voir ...) bah là je fai ce que j'ai à faire ;-)  
 
merci bien mister carbon14... tu pe juste un pe detailelr pkoi on met un efaible valeur pour mle max et une grande pour le min...? c juste pour etre sur qu'on aura plus grand et plus petit qu'une valeur arbitraire??
 

Reply

Marsh Posté le 18-11-2002 à 18:02:34    

C'est comme ça que je fais quand je sais pas où je vais.
 
ValMin = 32767 (en entier signé), le mini est censé être au pire cette valeur, y a pas plus grand !!
ValMax = -ValMin -32767, on peut pas être plus petit donc dès le premier tour de comparaison, on remplace ValMin et ValMax par les valeurs.
 
Au lieu de s'embêter comme ça, on peut aussi faire (ça me vient en passant, je vais peut-être l'adopter :))
on prend pour ValMin et ValMax la première valeur de la série.
 
i = 0; // premier point
ValMin = ValCourante[i];
ValMax = ValCourante[i];
 
for (i = 1; i < NbPnts; i ++)
{
  if (ValMin > ValCourante[i]) ValMin = ValCourante[i];
  if (ValMax < ValCourante[i]) ValMax = ValCourante[i];
}
 
Peut-être passer par calcul écart type ou qq chose comme ça pour voir écarts au maxi par rapport à la moyenne générale ? Stocker les maximas relatifs ds tableau pour les passer en revue ensuite ? Suis pas spécialiste :(.
 [:tomilou]
 
NB : si on démarre avec les valeurs calmes, ça doit aider. Si on peut avoir des "pointes" dès le début puis le "calme" après, faut trouver une méthode "générale" pour pas se faire piéger.


Message édité par Carbon_14 le 18-11-2002 à 18:04:50
Reply

Marsh Posté le 19-11-2002 à 08:43:49    

merki bcp pour tous ça...  :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed