0% ont trouvé ce document utile (0 vote)
3 vues5 pages

Formules et Codes MATLAB en Théorie du Signal

Ce document présente une fiche de formules et des codes MATLAB pour la théorie du signal, incluant des règles d'or pour la manipulation des signaux, la transformation de Fourier, la convolution, et le filtrage numérique. Des exemples de code illustrent la création de signaux usuels, l'application de la FFT, et le calcul de la densité spectrale de puissance. Enfin, une mini-checklist est fournie pour valider les résultats obtenus.

Transféré par

yahyayaoielhadj
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)
3 vues5 pages

Formules et Codes MATLAB en Théorie du Signal

Ce document présente une fiche de formules et des codes MATLAB pour la théorie du signal, incluant des règles d'or pour la manipulation des signaux, la transformation de Fourier, la convolution, et le filtrage numérique. Des exemples de code illustrent la création de signaux usuels, l'application de la FFT, et le calcul de la densité spectrale de puissance. Enfin, une mini-checklist est fournie pour valider les résultats obtenus.

Transféré par

yahyayaoielhadj
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

Théorie du Signal : fiche de formules + codes MATLAB

(Prêt à personnaliser)

0) Règles d’or (pour ne pas se tromper)


— Toujours fixer le pas temporel dt (ou Te ) et l’axe correspondant avant la FFT.
— Pour approcher une intégrale (convolution/intégrale de Fourier), utiliser des sommes et mul-
tiplier par dt.
— Pour afficher un spectre centré en 0, utiliser fftshift.

Listing 1 – Template de base (temps, signal, figures)


1 clear ; close all ; clc ;
2
3 % === Temps ( continu approx .) ===
4 dt = 1e -3; % pas temporel
5 t = -2: dt :2; % axe du temps
6
7 % === Exemple de signal x ( t ) ( a modifier selon l ’ nonc ) ===
8 x = (t >= -0.5 & t <=0.5) ; % rectangle hauteur 1 , largeur 1
9
10 figure ; plot (t ,x , ’ LineWidth ’ ,1.5) ; grid on ;
11 xlabel ( ’t ’) ; ylabel ( ’x ( t ) ’) ; title ( ’ Signal x ( t ) ’) ;

1) Signaux usuels (construction rapide)


1.1. Créneau/rectangle par logique
Idée : un rectangle sur [a, b] s’écrit x(t) = A · 1[a,b] (t).

Listing 2 – Rectangle, décalage et somme de rectangles


1 A = 2;
2 a = -0.2; b = 0.7;
3 x1 = A *( t >= a & t <= b ) ; % A sur [a , b ]
4

5 % D c a l a g e temporel : x (t - t0 )
6 t0 = 0.5;
7 x_shift = A *(( t - t0 ) >= a & (t - t0 ) <= b ) ;
8
9 % Somme de rectangles ( ex : signal d ’ archives )
10 x = x1 - 0.5* x_shift ;
11
12 figure ; plot (t ,x , ’ LineWidth ’ ,1.5) ; grid on ;
13 title ( ’ Somme de rectangles ’) ; xlabel ( ’t ’) ; ylabel ( ’x ( t ) ’) ;

1.2. Sinusoı̈de

Listing 3 – Sinus, cosinus, phase


1 A = 1; f0 = 10; phi = pi /4; % Hz
2 x = A * cos (2* pi * f0 * t + phi ) ;

1
2) Transformée de Fourier
2.1. Rappel (convention CTFT)
Z +∞ Z +∞
−jωt 1
X(ω) = x(t) e dt, x(t) = X(ω) e+jωt dω.
−∞ 2π −∞

2.2. CTFT numérique (approximation de l’intégrale)


x(tk )e−jωtk dt.
P
Principe : on calcule X(ω) ≈ k

Listing 4 – CTFT par somme (très bon pour vérifier un résultat analytique)
1 w = linspace ( -200 ,200 ,4001) ; % axe omega ( rad / s )
2
3 E = exp ( -1 j *( t (:) * w ) ) ; % matrice e ^{ - j w t }
4 Xw = ( x (:) . ’* E ) * dt ; % somme * dt ~ i n t g r a l e
5
6 figure ;
7 subplot (2 ,1 ,1) ; plot (w , abs ( Xw ) , ’ LineWidth ’ ,1.3) ; grid on ;
8 xlabel ( ’\ omega ’) ; ylabel ( ’| X (\ omega ) | ’) ;
9

10 subplot (2 ,1 ,2) ; plot (w , unwrap ( angle ( Xw ) ) , ’ LineWidth ’ ,1.0) ; grid on ;


11 xlabel ( ’\ omega ’) ; ylabel ( ’ arg ( X (\ omega ) ) ’) ;

2.3. FFT (DFT) + axe fréquence + centrage


Principe : FFT pour un signal échantillonné, avec un axe f (Hz) puis ω = 2πf .
Listing 5 – FFT correctement affichée (avec fftshift) + scaling dt
1 N = numel ( x ) ;
2 Fs = 1/ dt ; % f r q u e n c e d’ chantillonnage ( Hz
)
3

4 f = ( - N /2: N /2 -1) *( Fs / N ) ; % axe en Hz


5 w = 2* pi * f ; % axe en rad / s
6
7 X = fftshift ( fft ( x ) ) * dt ; % * dt pour approcher la CTFT
8
9 figure ;
10 plot (w , abs ( X ) , ’ LineWidth ’ ,1.3) ; grid on ;
11 xlabel ( ’\ omega ’) ; ylabel ( ’| X (\ omega ) | ’) ; title ( ’ Spectre ( FFT + fftshift ) ’) ;

2.4. Fourier symbolique (si le TD attend une expression fermée)

Listing 6 – Fourier symbolique (Symbolic Toolbox)


1 syms tt w
2 x_sym = heaviside ( tt +1) - heaviside ( tt -1) ; % rectangle [ -1 ,1]
3 X_sym = fourier ( x_sym , tt , w ) ; % X(w)
4 simplify ( X_sym )

3) Convolution (sortie d’un système LTI)


3.1. Rappel
Z +∞
y(t) = (x ∗ h)(t) = x(τ ) h(t − τ ) dτ.
−∞

2
3.2. Convolution numérique (avec conv)

Listing 7 – Convolution y = x*h avec l’échelle temporelle


1 % Exemple : r p o n s e impulsionnelle h ( t ) = e ^{ - a t } u ( t )
2 a = 5;
3 h = exp ( - a * t ) .*( t >=0) ;
4

5 y = conv (x , h ) * dt ; % * dt ~ i n t g r a l e
6 ty = ( t (1) + t (1) ) : dt : ( t ( end ) + t ( end ) ) ;
7
8 figure ;
9 plot ( ty ,y , ’ LineWidth ’ ,1.3) ; grid on ;
10 xlabel ( ’t ’) ; ylabel ( ’y ( t ) ’) ; title ( ’y ( t ) = x * h ( n u m r i q u e ) ’) ;

4) Corrélation et autocorrélation
4.1. Rappel (autocorrélation)
Z +∞
Rxx (τ ) = x(t) x(t + τ ) dt.
−∞

4.2. Avec xcorr (rapide et fiable)

Listing 8 – Autocorrélation avec xcorr + axe tau


1 [r , lags ] = xcorr (x , ’ none ’) ; % options : ’ biased ’ , ’ unbiased ’ , ’ coeff ’
2 tau = lags * dt ;
3
4 figure ;
5 plot ( tau ,r , ’ LineWidth ’ ,1.3) ; grid on ;
6 xlabel ( ’\ tau ’) ; ylabel ( ’ R_ { xx }(\ tau ) ’) ; title ( ’ A u t o c o r r l a t i o n ’) ;

5) Énergie, puissance, RMS


5.1. Signal d’énergie
Z +∞ X
E= |x(t)|2 dt ≈ |x(tk )|2 dt.
−∞ k

Listing 9 – Énergie et valeur efficace (RMS)


1 E = sum ( abs ( x ) .^2) * dt ; % nergie ( approx )
2 xrms = sqrt ( mean ( abs ( x ) .^2) ) ; % RMS discret ( sur l ’ intervalle s i m u l )
3 disp ( E ) ; disp ( xrms ) ;

6) Échantillonnage (rappel pratique)

1
Te = , x[n] = x(nTe ).
Fs

3
Listing 10 – Échantillonnage d’un signal ”continu” simulé
1 Fs = 200; Te = 1/ Fs ;
2 t = -1: dt :1; % " continu " s i m u l
3 x = cos (2* pi *30* t ) ; % signal analogique ( ex )
4

5 n = -50:50;
6 ts = n * Te ;
7 xs = cos (2* pi *30* ts ) ; % chantillons
8
9 figure ;
10 plot (t ,x , ’ LineWidth ’ ,1.0) ; hold on ; grid on ;
11 stem ( ts , xs , ’ filled ’) ; hold off ;
12 legend ( ’x ( t ) ’ , ’x [ n ] ’) ; xlabel ( ’t ’) ; title ( ’ chantillonnage ’) ;

7) Filtrage numérique (difference equation / LTI discret)


7.1. Filtrage avec filter
B(z)
Système rationnel : H(z) = .
A(z)
Listing 11 – Filtrer un signal avec filter(b,a,x)
1 % Exemple : FIR moyenne glissante ( lissage )
2 b = ones (1 ,5) /5; % num rateur
3 a = 1; % d nominateur
4 y = filter (b ,a , x ) ;
5

6 figure ;
7 plot (t ,x , ’ LineWidth ’ ,1.0) ; hold on ; grid on ;
8 plot (t ,y , ’ LineWidth ’ ,1.3) ;
9 legend ( ’x ’ , ’y = filter ( x ) ’) ; xlabel ( ’t ’) ; title ( ’ Filtrage ’) ;

7.2. Réponse fréquentielle avec freqz

Listing 12 – Réponse fréquentielle du filtre (magnitude)


1 [H , wz ] = freqz (b ,a ,2048) ; % wz en rad / chantillon
2 figure ; plot ( wz , abs ( H ) , ’ LineWidth ’ ,1.3) ; grid on ;
3 xlabel ( ’\ omega ( rad / ch ) ’) ; ylabel ( ’| H ( e ^{ j \ omega }) | ’) ; title ( ’ R p o n s e
f r q u e n t i e l l e ’) ;

8) Densité spectrale de puissance (PSD) et spectrogramme


8.1. Periodogramme (PSD)

Listing 13 – PSD avec periodogram


1 % Suppose x est un signal discret et Fs connu
2 [ pxx , fpsd ] = periodogram (x ,[] ,[] , Fs ) ; % PSD
3 figure ; plot ( fpsd ,10* log10 ( pxx ) , ’ LineWidth ’ ,1.3) ; grid on ;
4 xlabel ( ’f ( Hz ) ’) ; ylabel ( ’ PSD ( dB / Hz ) ’) ; title ( ’ Periodogramme ’) ;

4
8.2. Welch (PSD plus lisse) avec pwelch

Listing 14 – PSD avec pwelch (Welch)


1 win = hann (256) ;
2 noverlap = 128;
3 nfft = 1024;
4

5 [ pxx , fpsd ] = pwelch (x , win , noverlap , nfft , Fs ) ;


6 figure ; plot ( fpsd ,10* log10 ( pxx ) , ’ LineWidth ’ ,1.3) ; grid on ;
7 xlabel ( ’f ( Hz ) ’) ; ylabel ( ’ PSD ( dB / Hz ) ’) ; title ( ’ Welch PSD ’) ;

8.3. Spectrogramme (STFT) avec spectrogram

Listing 15 – Spectrogramme (temps-fréquence)


1 win = hann (256) ;
2 noverlap = 200;
3 nfft = 1024;
4

5 [s ,f , tsp ] = spectrogram (x , win , noverlap , nfft , Fs , ’ yaxis ’) ;


6 figure ;
7 imagesc ( tsp ,f ,20* log10 ( abs ( s ) ) ) ; axis xy ; colorbar ;
8 xlabel ( ’ Temps ( s ) ’) ; ylabel ( ’ F r q u e n c e ( Hz ) ’) ; title ( ’ Spectrogramme ( dB ) ’) ;

9) Mini-checklist (quand tu veux à 100% valider ton résultat)


— Compare le support temporel de x(t) et le support de Rxx (τ ) (largeur double typiquement).
— Si x(t) est réel : |X(ω)| est pair (symétrie) et la phase est impaire (souvent).
— Pour une somme de signaux : transformer chaque partie et faire la somme, puis comparer au
numérique.

Vous aimerez peut-être aussi