0% ont trouvé ce document utile (0 vote)
22 vues12 pages

Filtrage et Analyse Spectrale des Signaux

Le document traite du filtrage de signaux et de l'analyse spectrale, expliquant comment séparer les composantes d'un signal selon leurs fréquences à l'aide de filtres numériques. Il présente des exemples d'utilisation de MATLAB pour le filtrage et la transformation de Fourier, ainsi que la synthèse de filtres passe-bande de type Butterworth. Les fichiers de démonstration et les commandes MATLAB sont fournis pour illustrer les concepts abordés.

Transféré par

astou.niang3
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)
22 vues12 pages

Filtrage et Analyse Spectrale des Signaux

Le document traite du filtrage de signaux et de l'analyse spectrale, expliquant comment séparer les composantes d'un signal selon leurs fréquences à l'aide de filtres numériques. Il présente des exemples d'utilisation de MATLAB pour le filtrage et la transformation de Fourier, ainsi que la synthèse de filtres passe-bande de type Butterworth. Les fichiers de démonstration et les commandes MATLAB sont fournis pour illustrer les concepts abordés.

Transféré par

astou.niang3
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

Travaux pratiques sur les cas d’application

Le filtrage d’un signal est l’opération qui consiste à séparer les composantes de ce signal selon leurs
fréquences. Il représente la plus importante opération de conditionnement du signal après l’amplification.
On appelle filtre tout circuit qui réalise cette opération. Les intervalles de fréquence dans lesquelles les
composantes du signal sont transmises sont appelés bandes passantes. Ceux dans lesquelles elles sont
supprimées sont appelés bandes coupées. La fonction essentielle du filtrage est de séparer différents
signaux dans un canal de transmission. Il est utilisé pour extraire la partie utile des signaux en éliminant
les bruits et les composantes non pertinentes. Le filtrage du signal numérique intervient dans de
nombreux domaines : transmission du signal, traitement du son, des images, traitement des données
scientifiques.

Tandis que le but de l’analyse spectrale est d’obtenir une répartition de la puissance d’un signal en
fonction de la fréquence. Estimer un spectre est essentiel pour interpréter des signaux tels que les signaux
Doppler ultrasonores utilisés en cardiologie.

Filtrage d’un signal Analyse spectrale

1
TP1 : Filtrage de signaux
La fonction filter, du noyau MATLAB, permet d’obtenir la réponse d’un filtre numérique de fonction de
transfert H(z) à signal discret x(k). Elle a pour syntaxe :

y= filter(B, A, x)

x : vecteur représentant le signal à filtrer,

B, A : numérateur et dénominateur de la fonction de transfert du filtre,

Y : vecteur représentant le signal filtré.

Les fichiers de démonstration, filtdem, filtdem2 et filtdemo de la boite à outils « Signal Processing
Toolbox », permettent de visualiser des exemples de filtrage de signaux.

Considérons un filtre numérique du premier ordre de fonction de transfert :

0.2
𝐻(𝑧) =
𝑧 − 0.8

pour lequel, nous chercherons la réponse à un créneau.

Fichier apl_filt.m

%génération de la séquence d’entrée


N = 30 ; % nombre d’échantillons
t = 1 :0.1 :N ; %temps discret
% séquence d’entrée
x = [zeros(1,length(t)/3) ones(1,length(t)/3)
zeros(1,length(t)/3)];
%description du filtre
num_H = 0.2;
den_H = [1 -0.8];
% filtrage de la séquence d’entrée
y = filter(num_H , den_H, x);
%tracé des sequences d’entrée et de sortie du filtre

2
plot(t,x,' :'), hold on
plot(t,y)
title('reponse à un créneau d’ ’un filtre du premier
ordre')
xlabel('temps discret'), axis([0 30 -0.2 1.2]) , grid
gtext('entrée x'),
gtext('sortie y'),

Si l’on dispose de la boite à outils « Control System Toolbox », la fonction lsim(num_H, den_H,x)
réalise la même opération.

3
TP2 : Analyse spectrale
La transformée de Fourier d’un signal discret x(k) est calculée par la commande fft (algorithme TFR)
avec la syntaxe :

fft (x) : transformée de Fourier du vecteur x,

fft (x, N) : transformée de Fourier du vecteur x sur N points.

Si la longueur du vecteur x est plus petite que N, des zéros sont ajoutés. Dans le cas contraire, le signal x
est tronqué. On peut calculer directement la transformée de Fourier de plusieurs signaux dont les vecteurs
formeront les colonnes de la matrice x. Des exemples de transformée de Fourier peuvent être consultés
en lançant les fichiers de démonstration : fft, fft2(transformée de Fourier bidimensionnelle), fftdemo
(analyse spectrale FFT de la boite à outils « Signal Processing Toolbox »).

Comme exemple, on s’intéressera à la synthèse d’un filtre passe bande pour récupérer un signal
sinusoidal à partird’une somme de 3 sinusoïdes. On utilisera pour ceci des commandes disponibles dans
la boite à outils de traitement du signal « Signal Processing Toolbox ». On s’interessera plus
partiulièrement à la synthèse d’un filtre passe bande de type Butterworth, réalisée grâce à la commande
butter de syntaxe :

[b,a] = butter (n, [f1 f2])

b, a : numérateur et dénominateur de la fonction de transfert en z du filtre,

f1, f2: Fréquences limitant la bande passante du filtre,

n : fixe l’ordre 2n du filtre

Les fréquences F1 et F2 sont normalisées à la moitié de la fréquence d’échantillonnage. D’autres syntaxes


de cette même commande permettent de générer des filtres passe bas, passe haut, etc. La commande help
butter donne l’aide nécessaire. Pour obtenir la réponse en fréquences d’un filtre numérique, on utilisera la
commande freqz dont une syntaxe est :

H = freqz(b,a,f)

b, a : numérateur et dénominateur de la fonction de transfert en z du filtre,

f : vecteur désignant la bande de pulsation normalisées entre 0 et 𝜋.

Il est possible d’obtenir la réponse impulsionnelle d’un filtre numérique à partir de sa fonction de transfert
en z, grâce à la commande impz. L’une des syntaxes de cette commande, est la suivante :

4
[h, t] = impz(b, a)

Elle retourne les échantillons de la réponse impulsionnelle dans le vecteur h et les indices temporels dans
le vecteur t.

Fichier apl_fft.m

fe = 100 ; % Fréquence d’échantillonnage


t = (1 :fe)/fe ;
%différents signaux sinusoïdaux
x1 = sin (2*pi*t*40) ;
x2 = sin (2*pi*t*25) ;
x3 = sin (2*pi*t*10) ;
% signal somme
xtot = x1 + x2 +x3 ;
figure(1)
plot(t,xtot) ;
title('Somme de 3 sinusoïdes de fréquence 10, 25 et 40
Hz') ;
xlabel('fréquences normalisées')
grid

5
Fichier apl_fft.m (suite)

%fft du signal somme


figure(2)
Nx = length(xtot) ;
tf = fft(xtot,Nx) ;
w = (0 :Nx-1)/Nx*fe ;
%tracé de la fft du signal somme
stem(w,abs(tf(1 :Nx)))
grid
xlabel('fréquence en Hz')
title('module de la fft de la somme x1 + x2 +x3')

6
Dans le spectre obtenu, on retrouve bien les fréquences de 10,25 et 40 Hz. On observe la périodicité
𝑓𝑒
fréquentielle de valeur 𝑓𝑒 étant la fréquence d’échantillonnage.
2

Fichier apl_fft.m (suite)

%filtrage par un passe bas de Butterworth du 2nd ordre


%fréquences de coupure 20 et 30 Hz
%calcul du numérateur B et du dénominateur A de la
fonction de transfert en z du filtre passe bande
Butterworth %d’ordre 2.
[B,A] = butter(2, [20 30]/(fe/2)) ;
%filtrage du signal somme
s_filt = filter(B,A,xtot) ;
figure(3)
plot(t,x2)
title('signal de 25 Hz d’origine')
axis([t(1) t(length(t)) -1.5 1.5])
grid

7
figure(4)
plot (t,s_filt)
title('signal filtré')
axis([t(1) t(length(t)) -1.5 1.5])
xlabel('fréquences normalisées')
grid

Les figures suivantes représentent le signal sinusoïdal de 25 Hz d’origine et le signal sinusoïdal de


fréquence 25 Hz obtenu par le filtrage du signal somme.

8
Fichier apl_fft.m (suite)

% réponse en réponse en fréquences du filtre


H = freqz(B,A,w,fe) ;
%tracé du module du gabarit en échelles semi-log
figure(5)
semilogx(w, abs(H))
title('module de la réponse en fréquences du filtre')
xlabel('fréquences en Hz'),
grid

9
Fichier apl_fft.m (suite)

[h,t] = impz(B,A) ; %réponse impulsionnelle du filtre


figure(6)
stem(t,h),
xlabel('n°d’echantillon'),
grid
title('reponse impulsionnelle du filtre')

10
Fichier apl_fft.m (suite)

figure(7)
tff = fft(s_filt, Nx);
w = (0 :Nx-1)/Nx*fe ;
stem(w, abs(tff(1 :Nx))) ;
title('module de la fft du signal filtré')
xlabel('fréquences en Hz')
grid

11
12

Vous aimerez peut-être aussi