Traitement d'un signal

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pascal82

XLDnaute Occasionnel
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

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:
Re : Traitement d'un signal

Bonjour pascal82,

Pas certain du tout d'avoir bien interprété la demande. Un fichier en annexe (une simple ébauche, pas optimisée) pour voir si j'ai bien compris.
Pour une cellule de la ligne i (colonne C), on regarde l'écart avec cette cellule i (écart en valeur absolu) des cellules situées après. Tant que l'écart garde le même type 1 ou 2, on continue à descendre dans la colonne C. Quand l'écart change de type, on arrête. S'il y a plus de 4 cellules ayant le même type d'écart, on les surligne (en colonne A).
 

Pièces jointes

Re : Traitement d'un signal

Bonjour mapomme, le forum,

Désolé, pas pu répondre avant mais "Boulot" et "dodo"
Merci pour votre proposition, cependant nous rencontrons le même problème. En effet tout dépends de la référence initiale choisie pour lancer le premier calcul d'écart. Je m'explique prenons l'onglet du cas 4 en exemple
Référence par rapport au numéro chrono.
Détection d'un type 1 de (chrono) 1 à 6 tout va bien
Chrono 7 => détection en variation => tout va bien
Chrono 8 à 13 en type 2 parce que la (réf) est 8, et enfin 17 à 21 en type 1 avec une ref en 17, alors que si sélection initiale de la ref était 9 et non 8 alors vous détecteriez de 9 à 18 en type 1
Etc...

Je me doute bien de la complexité de programmation pour atteindre les résultats attendus en fonction du tableau de couleur J1:M7 de chaque onglet mais voila le casse tête.

Cordialement
 
Re : Traitement d'un signal

Bonsoir pascal82 🙂 ,

J'avais un peu poussé plus loin la chose. mais sans atteindre vos résultats. Je n'ai pas encore compris comment vous obtenez vos résultats (je sais, je suis long à la détente 😱)

Je vous joins, malgré tout, ce à quoi j'étais arrivé.
 

Pièces jointes

Re : Traitement d'un signal

Bonsoir mapomme,

Les résultats obtenus et "flagués" avec code de couleur correspondent à un traitement manuel du signal. Exemple avec onglet "Cas4" => Ecart max pour C4:C9 = 0.11 donc de Type 1, etc... Le tableau F2:H15 est le résultat de traitement avec mon premier code qui ne répond pas a tous les cas .

J'ai observé votre code et il est déjà très complexe. Malheureusement il ne répond pas encore a tous les cas de figures. La difficulté majeure que je rencontre est de déterminer un type 1 juste derrière un Type 2 lorsqu'il n'y a pas ou peu de variation. La sélection de la donnée de référence est donc primordiale et il faudrait pratiquement une nouvelle référence a chaque données ou la méthode choisie n'est pas la bonne (je pense).

En bref je m'arrache le peu de cheveux qu'il me reste

Cordialement
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
580
Réponses
5
Affichages
703
Réponses
5
Affichages
477
Réponses
10
Affichages
530
Réponses
8
Affichages
269
Réponses
2
Affichages
329
Retour