0% ont trouvé ce document utile (0 vote)
5 vues3 pages

Analyse des signaux et FFT en Python

Le document présente la construction de signaux y1, y2 et y3 à partir d'un signal x et le calcul de leur transformée de Fourier. Différentes manipulations du signal en temps et en fréquence sont illustrées.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues3 pages

Analyse des signaux et FFT en Python

Le document présente la construction de signaux y1, y2 et y3 à partir d'un signal x et le calcul de leur transformée de Fourier. Différentes manipulations du signal en temps et en fréquence sont illustrées.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Question 2

% construction des signaux y1 y2 y3


%y1
k=[0:2*N-1];
y1=[X;X];
subplot(2,2,2),
stem(k,y1,'b');title('y1');
hold on; plot(k,y1,'r')

%y2
z=0*[1:N]';
y2=[X;z];
subplot(2,2,3),
stem(k,y2,'b');title('y2');
hold on; plot(k,y2,'r')

%y3
for l=0:N-1
p=2*l;
q=2*l+1;
y3(p+1)=X(l+1);
y3(q+1)=0;
end
y3=y3';
subplot(2,2,4),
stem(k,y3,'b');title('y3');
hold on; plot(k,y3,'r')

% Calcul et affichage du spectre


Y1=fft(y1);
Y2=fft(y2);
Y3=fft(y3);

y_f=[0:fe/(2*N):fe];
y_f(end)=[];

figure(2),

subplot(2,2,1),stem(x_f,abs(Y).^2/length(Y)),title('module de la fft X');

subplot(2,2,2),stem(y_f,abs(Y1).^2/length(Y1)),title('module de la fft
Y1');

subplot(2,2,3),stem(y_f,abs(Y2).^2/ length(Y2)),title('module de la fft


Y2');

subplot(2,2,4),stem(y_f,abs(Y3).^2/ length(Y3)),title('module de la fft


Y3');

subplot(2,2,2) Quand le signal est dupliqué en temps, des zéros sont intercalés en fréquence
(un zéro est ajouté entre chaque raie du spectre).
subplot(2,2,4) Quand des zéros sont intercalés en temps, le spectre est dupliqué en fréquence.
subplot(2,2,3),Quand le signal est complété par des 0, les raies ajoutées sont une interpolation du
spectre entre les 2 raies voisines.

Seule la solution qui consiste à compléter par des zéros est intéressante. C’est ce que l’on appelle le « zero
padding ».

C’est la solution utilisée par la fonction fft de Matlab. Taper help fft. Vous verrez que celle-ci peut être appelée
avec un 2ème paramètre d’entrées fft(X,N). Ici, N définit la taille du signal artificiel. La fft sera calculée à partir
du signal X complété par le nombre de zéros suffisant pour atteindre une taille N. Bien évidemment, pour que
cela ait un intérêt N doit être supérieur ou égal à la taille du signal X. On choisit en général N comme une
puissance de 2 (16, 32, …) car le calcul de la FFT est plus rapide dans ce cas.

Version Python (code)

#Creation des y

y1=[Link]((2*N))

y2=[Link]((2*N))

y3=[Link]((2*N))

y1[0:N]=x

y1[N:2*N]=x

y2[0:N]=x

y3[0:2*N:2]=x1[0:N]

[Link]()

[Link](2,2,1), [Link](x1,use_line_collection=True)

[Link](2,2,2), [Link](y1,use_line_collection=True)

[Link](2,2,3), [Link](y2,use_line_collection=True)

[Link](2,2,4), [Link](y3,use_line_collection=True)

X = [Link](x)

Y1 = [Link](y1)

Y2 = [Link](y2)

Y3 = [Link](y3)

[Link]()

[Link](2,2,1), [Link]([Link](X)*[Link](X)/size(X),use_line_collection=True)

[Link](2,2,2), [Link]([Link](Y1)* [Link](Y1)/size(Y1))si,use_line_collection=True)


[Link](2,2,3), [Link]([Link](Y2)* [Link](Y2)/size(Y2))use_line_collection=True)

[Link](2,2,4), [Link]([Link](Y3)* [Link](Y3)/size(Y3)),use_line_collection=True)

subplot(2,2,2) Quand le signal est dupliqué en temps, des zéros sont intercalés en fréquence
(un zéro est ajouté entre chaque raie du spectre).
subplot(2,2,4) Quand des zéros sont intercalés en temps, le spectre est dupliqué en fréquence.

subplot(2,2,3),Quand le signal est complété par des 0, les raies ajoutées sont une interpolation du
spectre entre les 2 raies voisines.

Seule la solution qui consiste à compléter par des zéros est intéressante. C’est ce que l’on appelle le « zero
padding ».

C’est la solution utilisée par la fonction fft de numpy ou scipy. Allez voir le help de la fonction fft . Vous verrez
que celle-ci peut être appelée avec un 2ème paramètre d’entrées fft(X,N). Ici, N définit la taille du signal
artificiel. La fft sera calculée à partir du signal X complété par le nombre de zéros suffisant pour atteindre une
taille N. Bien évidemment, pour que cela ait un intérêt N doit être supérieur ou égal à la taille du signal X. On
choisit en général N comme une puissance de 2 (16, 32, …) car le calcul de la FFT est plus rapide dans ce cas.

Vous aimerez peut-être aussi