bonjour,
j'ai fait un petit programme Matlab qui devrait montrer que la TFTD de la fenêtre de hann est bien TFTDHann(nu)
on prend un signal de 0 à N-1
hann(n) = 0.5 - 0.5*cos(2*pi*n/(N-1));
on trouve
TFTDHann(nu) = \sum_{n=0}^{N-1} e^{-2i.Pi.Nu.n} hann(n) = 0.5*e^{-i.Pi.Nu.(N-1)}*psinc(nu,N) - 0.25*e^{-i.Pi.(Nu-1/(N-1)).(N-1)}*psinc(nu-1/(N-1),N) - 0.25*e^{-i.Pi.(Nu+1/(N-1)).(N-1)}*psinc(nu+1/(N-1),N);
psinc est la periodic sinc function (ou TFTD de la fenêtre rectangulaire) :
psinc(nu,N) = sin(pi*N*nu)/sin(pi*nu)
et nu est la variable fréquentielle réduite (F(nu) est périodique de période 1)
oui j'ai oublié de préciser : sous matlab diric(2*pi*x,N) = psinc(x,N)/N
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 clear all; close all; % nombres de points de la fenêtre temporelle N = 64; % on a 8 fois plus points en fréquentiel KM = 8; % nb de points en fréquentiel M = N*KM; % les "variables" n = 0:N-1; nu = [0:M-1]/M; % la fenêtre de hanning, on pourrait écrire win = window(@hann,N)'; win = 0.5*ones(1,N) - 0.25*exp(2*i*pi*n/(N-1)) - 0.25*exp(-2*i*pi*n/(N-1)); W = fft(win,M)/N; % W devrait être égal à ça : y = 0.5*diric(nu*2*pi,N) - 0.25*diric((nu-1/(N-1))*2*pi,N) - 0.25 *diric((nu+1/(N-1))*2*pi,N); subplot(211); plot(abs(W(1:100))); subplot(212); plot(abs(y(1:100)));
qu'est-ce qui est faux ???!!!
merci d'avance
Partager