1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 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
    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 : 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
    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 éprouvé
    Homme Profil pro
    Data Scientist
    Inscrit en
    février 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : février 2009
    Messages : 217
    Points : 403
    Points
    403

    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
    Étudiant
    Inscrit en
    février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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  

Discussions similaires

  1. problème avec les vecteurs
    Par beloboy dans le forum MATLAB
    Réponses: 2
    Dernier message: 08/06/2012, 13h37
  2. Problème avec les vecteurs Java
    Par choko83 dans le forum Débuter
    Réponses: 3
    Dernier message: 22/05/2008, 17h52
  3. Problème avec les vecteurs
    Par lamia89 dans le forum Débuter
    Réponses: 11
    Dernier message: 09/04/2008, 21h34
  4. Problèmes avec les Vecteurs
    Par alsimb dans le forum C
    Réponses: 8
    Dernier message: 10/02/2007, 10h29
  5. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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