Bonjour à tous,
Alors voilà, je ne suis absolument pas spécialiste en TDS ni en MATLAB et j'aurais besoin d'un coup de main pour effectuer du fourrier fenêtre glissante.
Dans un premier temps, j'essaie d'appliquer une TFFG sur cas un simple comme celui fourni en exemple dans l'aide MATLAB (dernier paragraphe):
http://www.mathworks.fr/help/toolbox...bsoozdn-1.html
Mon souci est que je ne parviens pas à obtenir le même résultat que les graph en fin de page...
J'utilise la fonction spectrogram de MATLAB et surf pour la représentation graphique (il doit y avoir mieux que surf...)
J'ai un doute sur la fonction spectrogram :
Je ne vois pas bien le rôle de f malgré l'aide MATLAB.
Code : Sélectionner tout - Visualiser dans une fenêtre à part [S,F,T] = spectrogram(x,window,noverlap,f)
Pourriez-vous m'éclairer sur ce point?
Ensuite voici le programme que j'ai fait pour essayer de reproduire l'exemple de MATLAB sans succès:
Est-ce que je dois utiliser une autre fonction que spectrogram? Est-ce qu'il y a une erreur grossière dans mon code??
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 clear all close all clc Fe=50; dt=1/Fe; ti=0; tf=5; t=ti:dt:tf-dt; df=1/(tf-ti); f=0:df:Fe/2; N=size(t,2); fsize=80; fdebut=50; fenetre=[ zeros(fdebut-1,1) ; ones(fsize+1,1) ; zeros(N-(fsize+fdebut),1) ]; x1=1; f0=5; Xa=x1*sin(2*pi*f0*t); Xb=Xa.*fenetre'; fXa=fft(Xa)/N; fXb=fft(Xb)/N; W=20; window=hamming(W); noverlap=W/2; [S,F,T] = spectrogram(Xb,window,noverlap,f,Fe); figure(1) surf(T,F,log10(abs(S))) fig=figure(2); set(fig, 'Position', [200 100 1000 800]) subplot(2,2,1) plot(t,Xa) subplot(2,2,3) plot(t,Xb) subplot(2,2,2) plot(f,abs(fXa(1:length(fXa)/2+1))) set(gca,'ylim',[0 0.5]) subplot(2,2,4) plot(f,abs(fXb(1:length(fXb)/2+1))) set(gca,'ylim',[0 0.5])
Merci d'avance pour votre aide !!!
Partager