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