Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Homme Profil pro anthony palmieri
    Étudiant
    Inscrit en
    février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony palmieri
    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 2013
    Messages : 17
    Points : 4
    Points
    4

    Par défaut problème avec les vecteur de numpy

    Bonjour ,
    Je cherche a faire un synthese additive pour construire un signal périodique à partir
    d’une somme de sinus/cosinus pondérées par des an et bn .
    Pour cela , j'ai reussi une méthode en utilisant les vecteurs de numpy .
    Mais je souhaite réaliser la meme chose mais avec des tableaux mais je n'arrive pas a tracer la courbe , une erreur me dit que mes deux tableaux sig_t et sig_s ne sont pas de la meme dimension et pourtant ils sont tous les deux initialisé a 100 valeurs

    avec numpy
    Code :
    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
    29
    30
    31
    32
    33
    34
    35
    36
     
    import math
    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.ticker import MultipleLocator
     
     
    def CalcAn(A,k):
        if(k%2):
            a=((8*A) / math.pow(math.pi*k,2))
            return  a
        else:
            return 0
     
     
    def signalT(A=1.5,f=100.0,N=10,Te=0.00033,k=0.033):
     
     
     
        xan = []
        yan = []
        xbn = []
        ybn = []
        t = np.arange(0, k, Te) #tableau de 0 à k par intervalle Te
        print"Tableau T de 0 à k"
        print t
        s1 = np.zeros(k/Te) #Initialise avec des 0, tableau de taille k/Te
     
        #Calcul raies du spectre
        for i in range(N):
            yan.append(CalcAn(A,i))
            s1 += yan[i] * np.cos(2*math.pi*i*f*t)
            xan.append(i) 
            xbn.append(i)
            ybn.append(0) # bn = 0
            i = i+1
    code avec les tableaux
    Code :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    import sys 
    import math
    import matplotlib.pyplot as plt
    from matplotlib.ticker import MultipleLocator
    import numpy as np
    from symbol import if_stmt
    import tp1_0
     
    def calculANBN(A,N):
        An=[]
        Bn=[]
        X=[]
        for i in range(0,N):
            if(i%2):
                An.append( (8*A) / math.pow(math.pi*i,2))
            else:
                An.append(0)
            Bn.append(0)
            X.append(i)
            i=i+1
        return An,Bn,X
     sig_s[i][k]+=CalcAn(A,k)*math.cos(2*math.pi*i*f*sig_t[i])         
    def CalcAn(A,k):
        if(k%2):
            a=((8*A) / math.pow(math.pi*k,2))
            return  a
        else:
            return 0
     
    def SignalT(A=1.5,f=100.0,N=10,Te=0.00033,k=0.033):
        sig_s=[0]*100
        sig_t = np.arange(0, k, Te) #tableau de 0 a k par intervalle Te
        for i in range(N):
            k = 0
            while k<N: # for each harmonic k
                #print CalcAn(A,k)*math.cos(2*math.pi*k*f*t)
                #print CalcAn(A,k)
               sig_s[i*10+k]+=((An[k] * math.cos(2* math.pi*i*f*sig_t[k+i])))   
                k=k+1
     
       return sig_s,sig_t
     
     
     
    if __name__ == '__main__':
        An=[]
        Bn=[]
        N=[]
        sig_t=[]
        sig_s=[]
        sig_s, sig_t = SignalT()
        #An,Bn,N,sig_s,sig_t=sT(A=3,kMax=14)
        plt.subplot(311)
        plt.plot(sig_t,sig_s,'-r^')
        plt.xlabel('time')
        plt.ylabel('S(kTe)')
        plt.grid(True)
        plt.subplot(312)
        plt.plot(N,An,'bo')
        plt.xlabel('n')
        plt.ylabel('An de S(nFo)')
        plt.grid(True)
        plt.subplot(313)
        plt.plot(N,Bn,'bo')
        plt.xlabel('n')
        plt.ylabel('Bn de S(nFo)')
        plt.grid(True)
        plt.show()
    En faite jsi j'ai bien compris , le vecteur sera considéré comme un vecteur mathématique alors quand on le multiplie par une constance dans l'iteration , c'est toute la colonne qui est mutliplié ?
    Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Homme Profil pro Grégory
    Data Scientist
    Inscrit en
    février 2009
    Messages
    181
    Détails du profil
    Informations personnelles :
    Nom : Homme Grégory
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Data Scientist
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : février 2009
    Messages : 181
    Points : 326
    Points
    326

    Par défaut

    Bonjour,

    après avoir regarder un peu ton code, je me suis aperçu que l'un des tableau était une liste d'élément de 100 éléments et que l'autre était une liste de 10 éléments chacun eux même de 10 éléments.

    100 != 10*10

    je pense que l'erreur viens de là.

    Cordialement.

  3. #3
    Invité de passage
    Homme Profil pro anthony palmieri
    Étudiant
    Inscrit en
    février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Nom : Homme anthony palmieri
    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 2013
    Messages : 17
    Points : 4
    Points
    4

    Par défaut

    Merci en corrigeant ça ça me trace la figure , Mais pas la bonne ^^ (je dois obtenir la figure en PJ).
    Pour résumer l'action du vecteur en pseudo code (à l'aide de tableau ) , pourrait on résumer comme ça :
    Pour i allant de 0 à N ,
    Pour k allant de 0 à N (parcours de la matrice N*N
    Ajouter An*cos(2*pi*i*frequence*sigs_t[i*10+k-1] ou n = k à sig_s[i*10+k]

    ce pseudo code est il equivalent à ca ?

    for i in range(N):
    yan.append(CalcAn(A,i))
    s1 += yan[i] * np.cos(2*math.pi*i*f*t)
    xan.append(i)
    xbn.append(i)

    Merci d'avance
    Images attachées Images attachées

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •