1. #1
    Nouveau membre du Club Avatar de bj303931
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2016
    Messages
    73
    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 : 73
    Points : 28
    Points
    28

    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 : 49
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 confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    août 2010
    Messages
    438
    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 : 438
    Points : 622
    Points
    622

    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
    2 422
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : novembre 2010
    Messages : 2 422
    Points : 6 474
    Points
    6 474

    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 : 22
Taille : 67,4 Ko
    Avant donc que d'écrire, apprenez à penser.
    Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
                                                        - Nicolas Boileau, L'Art poétique

Discussions similaires

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

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