IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Concaténer 2 signaux sinusoïdaux


Sujet :

Réseau/Web Python

  1. #1
    Nouveau membre du Club Avatar de bj303931
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 75
    Points : 27
    Points
    27
    Par défaut Concaténer 2 signaux sinusoïdaux
    Bonjour,
    je cherche à concaténer 2 signaux sinusoïdaux, le code pour une sinusoïde est
    Nom : sin.png
Affichages : 1948
Taille : 46,3 Ko

    Et je cherche à afficher plusieurs sinusoïdes avec des fréquences différentes. Je n'ai pas le code sous la main mais de mémoire j'ai essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     frequences = [264;297;330;352;396;440;495;528]
    x=0 # x est la coordonnée verticale
    for i in frequence:
         make_sin (1,0, frequences[i], 8000, 1)
         plot(x,0,"",'-bo')
         x=x+1/i #car 1/i=1/g=T avec T la période
    Le problème, c'est qu'il y a des "blancs" entre 2 sinusoïdes! Help-me, je n'y parivens VRAIMENT pas!!!

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut,

    Vous appelez make_sin, mais vous ne récupérez pas sa sortie. Or c'est cette sortie que vous devriez passer à la fonction pour tracer (par ailleurs, "plot" n'est pas un nom très judicieux car utilisé par matplotlib).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    frequences = [264, 297, 330, 352, 396, 440, 495, 528]
    for freq in frequence:
         t, s = make_sin(1, 0, freq, 8000, 1)
         plot(t, s, "", '-bo')
     
    plt.show()
    J

  3. #3
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    déjà la fonction make_sin() n'est pas adaptée, en gros il faut que toutes les courbes aient le même sig_t, et donc la fonction se contente de renvoyer la liste des sig_s correspondants

    ensuite effectivement la fonction plot() est pas forcément très pertinente, elle n'est appelée qu'une seule fois et qu'elle porte un nom qui peut être ambigu

    enfin pour additionner deux sinusoïdes, rien de plus simple vu que -justement- leurs points sont alignés, il suffit d'additionner les deux listes sig_s membre à membre

    le code suivant reprend les idées directrices :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    import math
    import matplotlib.pyplot as plt
    from operator import add
     
    def make_sin(a=1, ph=0, f=440.0, fe=8000.0, n=100):
       omega = 2 * math.pi * f
       te = 1.0/fe
       zob = omega * te
       return [a * math.sin((zob * i) + ph) for i in range(n)]
     
    if __name__ == '__main__':
       nbValeurs = 100
       x = range(nbValeurs)
       y1 = make_sin(a=2, f=50.0, fe=1000.0, n=nbValeurs)
       y2 = make_sin(a=1, f=30.0, fe=1000.0, n=nbValeurs)
       y3 = map(add, y1, y2)  # on additionne les sinusoides ici
     
       plt.plot(x, y1, '--C8', label='Sin Wave #1')
       plt.plot(x, y2, '--C1', label='Sin Wave #2')
       plt.plot(x, y3,  '-C9', label='Sum #1+#2')
     
       plt.xlabel('time (s)')
       plt.ylabel('voltage (V)')
       plt.title('Trois sinusoides...')
     
       plt.grid(True)
       plt.legend()
       plt.show()
    et le résultat :
    Nom : Figure_1.png
Affichages : 1839
Taille : 67,4 Ko

Discussions similaires

  1. [Débutant] Concaténation de signaux
    Par soufientata dans le forum Signal
    Réponses: 4
    Dernier message: 27/10/2010, 21h10
  2. Visualiser une somme de signaux sinusoïdaux
    Par seb_94350 dans le forum Signal
    Réponses: 1
    Dernier message: 20/11/2007, 10h39
  3. Problème pour concaténer des signaux
    Par Math66 dans le forum Signal
    Réponses: 3
    Dernier message: 31/05/2007, 15h12
  4. Concaténer TStrings
    Par Tuxxy dans le forum Composants VCL
    Réponses: 8
    Dernier message: 07/03/2003, 12h30
  5. Concaténation de String et Integer
    Par Ingham dans le forum Langage
    Réponses: 5
    Dernier message: 21/01/2003, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo