Bonjours,

Comme indiqué dans l'intitulé, je cherche à obtenir le spectrogramme d'un signal connu sans utiliser la fonction spectrogram() prédéfinie dans Matlab.
Débutant sur Matlab, j'ai écrit un code "test" (voir ci-dessous) sur un sinus basique mais je n'obtiens aucun résultat cohérent.
Si quelqu'un veut bien prendre la peine de m'aider, je lui en serais reconnaissant.

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
 
 
%SPECTROGRAMME : code permettant de tracer le spectrogramme d'un signal
%sans passer par la fonction prédéfinie spectrogram() de Matlab
 
%exemple d'une fonction sinus 
 
close all, clear all;
 
% axe des temps
fe = 1000; % fréquence d'échantillonnage
te = 1/fe;
t = (0 : te : 10);
 
signal = sin(2*pi*20*t);
figure
plot(t , signal);
 
borneinf = 1;
delta = 0.5;
L = length(signal);
 
while borneinf < L
 
	a = signal(borneinf : 1 : borneinf + delta);  % sélection d'une partie du signal de départ
	b = (abs(fftshift(fft(a)))).^2; % calcul de la transformée de Fourier, puis de son module au carré
	c = b.'; % transposée : inversion lignes/colonnes
 
	if borneinf == 1
        d = c;
 
	else
		d = [ d, c ]; % concaténation : ajout du vecteur colonne c "à droite" de la matrice d
 
	end;
 
	borneinf = borneinf + delta; % incrémentation
 
end;
 
figure;
plot(d); %tracé du spectrogramme