Bonjour si quelqu'un pouvait m'aider ça serait vraiment top de votre part
alors j'ai un projet sur python en traitement de signal. Nous avions un fichier de base donné comprenant deux colonnes : la premiere de temps et la deuxième les valeurs d'un signal reçu correspondantes.
dans un premier temps je devais tracer le signal recu j'ai alors fais ce premier code :
Ici je ne pense pas qu'il y ai de problème, j'ai obtenu mon graphe. Mais par la suite, on me demande d’appliquer un algorithme de fft afin de déterminer le contenu fréquentiel global et de représenter le spectre obtenu. Alors avec certaines explications que j'ai eu j'ai créé ces programmes :Code:import numpy as np import matplotlib.pyplot as plt Y = np.loadtxt('Projet4_cas1.txt') plt.figure(figsize=(30,6)) plt.subplot(1,2,1) plt.plot(Y[:,0],Y[:,1]) plt.title("signal 1") plt.show plt.subplot(1,2,2) plt.plot(Y[:,0],Y[:,1]) plt.title("zoom") plt.axis([0, 0.00003, -5, 5]) plt.show
Code:import math import numpy as np from matplotlib.pyplot import * from numpy.fft import fft, ifft def signal(t): N=t.size YF=fft(Y) Y2=ifft(YF) print(YF) A=np.zeros(N//2) #vecteur qui contient les ampliude on l'initialize et on veut que les fréquence positif A=np.abs(YF)/N #composante continue du signal for k in range (1,N//2): #pour toue les fréquence positif non nul A[k]=2*np.abs(YF[k])/N return A return YF ________________________________ T=100 fe = 0.7 t= np.arange(start=0.0,stop=T,step=1.0/fe) echantillons = signal(t) tfd = fft(echantillons) N=len(echantillons) spectre = np.absolute(tfd)*2/N freq=np.arange(N)*1.0/T figure(figsize=(10,5)) plot(freq,spectre,'r') xlabel('f') ylabel('A') axis([0,fe/2,0,spectre.max()]) grid()
Mes programmes me renvoient bien un graphique mais ce n'est pas celui attendu ... je ne comprends pas mon erreur et si quelqu'un pouvait me donner un coup de pouce j'en serais très reconnaissante...
Merci d'avance !
-----