Traitement de signal sous python
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Traitement de signal sous python



  1. #1
    Shantorian

    Traitement de signal sous python


    ------

    Bonjour à tous,

    Je rencontre des difficultés sur un bout de programme assez simple.

    Pour présenter le problème, je mesure une erreur en degré en fonction du temps. Mon système mécanique fait que mon signal comporte des paliers, or pour traiter ce signal, je dois me débarrasser de tout offset et ne garder que les "plateaux" avec donc des valeurs qui vont osciller autour de 0, normal pour une erreur.

    Or, malgré les quelques cours d'algo que j'ai eu, je ne sais pas trop comment faire, j'ai testé différentes méthodes, mais qui me donnaient pas mal de bugs, et j'imagine qu'on peut coder ça proprement.

    Voici le code :
    Code:
    import serial 
    import matplotlib.pyplot as plt
    import time
     
    valeurs=[]
    angles1 = []
     
    temps=[]
     
    serie=serial.Serial('COM3',9600) 	# ouvre une liaison serie en 9600bps											
    
     
    plt.style.use('bmh')
    plt.ylabel("teta")
    plt.xlabel("temps en s")
     
    plt.ion() 			# on entre en mode interactif
    start=time.time()	# mesure de l'instant initial
    
    
    i=0
    while (i<100):
    
        mesure1, mesure2 = map(float, serie.readline().split()) # lit la donnee sur la laison serie
        
        angle1 = mesure1 / (1/180)
        angle2 = mesure2 / (1/180)
        
        if i == 3:
            ref = (angle2-(angle1)*(1/25))
        
        angles1 += [angle1]
        
        if -1 <= angle1 <= 1:
            ref = (angle2-(angle1)*(1/25))
        
        instant=time.time()-start	# calcul du temps ecoule depuis l'instant initial
        if i >= 3:                  #les premiers points ne sont pas fiables 
        
        
            temps.append(instant)		# ajout de instant a la liste des temps
            valeur = (angle2-(angle1)*(1/25))-ref
            
            valeurs.append(valeur) 
            print(mesure1,instant)      # affiche dans la console les coordonnees du point
            print(mesure2,instant) 
            
     
        plt.plot(temps,valeurs,marker='o')  # trace la courbe
        plt.draw()                     # affiche la courbe en mode interactif
        i=i+1
     
    plt.ioff() 		# on quitte le mode interactif pour rendre la main a l'utilisateur sur la courbe
    plt.show()
    Je vais essayer d'expliquer un peu le code : Je reçois des tensions, que je convertis en degrés, à chaque passage à 0 de l'angle 1 j'ai un nouveau pallier. J'ai essayé de détecter ce passage et de soustraire l'offset, ça marche presque mais j'ai quelques points qui restent n'importe où et je n'arrive pas à m'en débarrasser. J'ai essayé de garder seulement les points compris dans un intervalle raisonnable autour de 0, sans, succès, que des messages d'erreurs (avec pourtant une simple boucle if).

    Voici le graphe de base : Nom : Capture.PNG
Affichages : 336
Taille : 31,5 Ko

    Merci d'avance !

    -----
    Dernière modification par Shantorian ; 24/06/2017 à 15h05.

  2. #2
    bobflux

    Re : Traitement de signal sous python

    Utilise numpy.

    Ton problème est similaire à celui rencontré quand on trace l'argument (ie, l'angle) d'un nombre complexe : ça va de 0 à pi et puis ça repart à -pi, etc. Numpy fournit une fonction unwrap() qui corrige ceci et remet les valeurs comme tu les veux. Il faut que l'angle soit en radians.

Discussions similaires

  1. prnicipe d'Heinsenberg en traitement du signal sur signal discret
    Par Anthony39 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 18/05/2012, 07h11
  2. traitement signal sous matlab
    Par invite2660b824 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 15/07/2011, 12h30
  3. Récupération d'un signal et traitement du signal avec Matlab
    Par invite8a011b82 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 13/04/2011, 10h46
  4. Traitement de signal - expression sous formes de peigne de Dirac
    Par invitee9dfc0a6 dans le forum Électronique
    Réponses: 1
    Dernier message: 21/11/2010, 17h05
  5. Traitement de signal - expression sous formes de peigne de Dirac
    Par invitee9dfc0a6 dans le forum Technologies
    Réponses: 0
    Dernier message: 15/11/2010, 16h14