Bonjour,
J'ai des mesures dans l'ordre chronologique de n à n+x et je dois définir le type de signal en fonction de son amplitude et définir le début et la fin de chaque palier. Dans un monde parfait ou les variations sont importantes et nettes pas de problème, par contre ce n'est pas le cas dans les exemples que j'ai mis a dispo dans le fichier.
Explication:
Il faut a minima 5 mesures consécutives pour valider et noter le palier avec son type
La première valeur est la référence de début de palier (n) et on compare les valeurs suivantes (n+i) a la référence du palier pour calculer l'écart
Ecart (Valeur Max - Valeur Min)
si E <= 0.5 alors Type 1
si 0.5 < E <= 1.5 alors type 2
si E > 1.5 alors Changement de palier ou point atypique
Mon problème vient du fait que si:
- Le palier commence par un type 1 pas de problème il reconnaîtra le type 2 suivant
- Le palier commence par un type 2 alors il ne reconnaîtra pas le type 1 qui peut survenir après quelques mesures.
Si quelqu'un pouvait me donner une piste de traitement je suis preneur.
Merci par avance aux contributeurs
Cordialement
J'ai des mesures dans l'ordre chronologique de n à n+x et je dois définir le type de signal en fonction de son amplitude et définir le début et la fin de chaque palier. Dans un monde parfait ou les variations sont importantes et nettes pas de problème, par contre ce n'est pas le cas dans les exemples que j'ai mis a dispo dans le fichier.
Explication:
Il faut a minima 5 mesures consécutives pour valider et noter le palier avec son type
La première valeur est la référence de début de palier (n) et on compare les valeurs suivantes (n+i) a la référence du palier pour calculer l'écart
Ecart (Valeur Max - Valeur Min)
si E <= 0.5 alors Type 1
si 0.5 < E <= 1.5 alors type 2
si E > 1.5 alors Changement de palier ou point atypique
Mon problème vient du fait que si:
- Le palier commence par un type 1 pas de problème il reconnaîtra le type 2 suivant
- Le palier commence par un type 2 alors il ne reconnaîtra pas le type 1 qui peut survenir après quelques mesures.
Si quelqu'un pouvait me donner une piste de traitement je suis preneur.
Merci par avance aux contributeurs
Cordialement
Code:
=Option Explicit
Sub CasSimple()
Dim i%, j%
Dim PalierX1%, PalierY1%
Dim Max1!, Min1!, E1!, Somme1!, moyenne1!, a!
Range("F2:H100").ClearContents
'charge les données en C1-----------------------------------------------------------
For i = 0 To 64
Range("c1").Value = Range("c4").Offset(i, 0).Value
'a=> ref1----------
a = Range("c1").Value
Somme1 = Range("c1").Value + Somme1
'-----------------------------------------------------------------------------------
If a > Max1 Then Max1 = a
If a < Min1 Then Min1 = a
j = j + 1
E1 = Max1 - Min1
' Incrémente Palier type1-----------------------------------------
If E1 < 0.501 And E1 > 0 Then
PalierX1 = PalierX1 + 1
End If
' Incrémente Palier type2 ------------------------------------------
If E1 > 0.501 And E1 < 1.501 Then
PalierY1 = PalierY1 + 1
End If
'ecriture palier si variation si E1 > 1.5 ------------------------
If E1 > 1.501 And (PalierX1 > 4 Or PalierY1 > 4) Then
If PalierX1 > 4 Then
Range("F1000").End(xlUp)(2).Resize(1, 1).Value = "Type 1"
moyenne1 = (Somme1 - a) / (PalierX1 + 1)
PalierX1 = 0
End If
If PalierY1 > 4 Then
Range("F1000").End(xlUp)(2).Resize(1, 1).Value = "Type 2"
moyenne1 = (Somme1 - a) / (PalierY1 + 1)
PalierY1 = 0
End If
Range("H1000").End(xlUp)(2).Resize(1, 1).Value = i
Range("G1000").End(xlUp)(2).Resize(1, 1).Value = moyenne1
Max1 = Range("C1").Value
Min1 = Range("C1").Value
j = 1
Somme1 = Range("C1").Value
End If
'ecriture variation si E1 > 1.5 -----------------------------------
If E1 > 1.501 And (PalierX1 < 5 Or PalierY1 < 5) Then
Max1 = Range("C1").Value
Min1 = Range("C1").Value
j = 1
Range("F1000").End(xlUp)(2).Resize(1, 1).Value = "Variation"
Range("G1000").End(xlUp)(2).Resize(1, 1).Value = "Variation"
Range("H1000").End(xlUp)(2).Resize(1, 1).Value = i + 1
PalierY1 = 0
PalierX1 = 0
Somme1 = Range("C1").Value
End If
Next
End Sub
Pièces jointes
Dernière édition: