Académique Documents
Professionnel Documents
Culture Documents
Filtrage adaptatif
Les méthodes adaptatives en traitement du signal visent la réalisation des opérations d'optimisation
statistique (filtrage optimal, prédiction linéaire, modélisation des signaux) par traitement en ligne des
données. Elles cherchent à optimiser les paramètres caractéristiques des traitements. Elles constituent
actuellement l'un des grands thèmes de la discipline du traitement du signal. Leur succès est dû à la
philosophie qui les sous-tend, qui est de s'appuyer sur le caractère séquentiel de l'acquisition du signal pour
effectuer l'acquisition de manière récursive. L'avantage principal de l'adaptatif est la simplicité des calculs :
quelques incrémentations successives suffisent pour fournir l'optimum.
L'objectif de ce TP est d'aider à comprendre à quoi servent les algorithmes adaptatifs et d'illustrer sur des
applications concrètes leurs intérêts.
Nous nous proposons donc:
– d'exposer les principes de base et les deux principales méthodes qui sous-tendent la multiplicité des
approches que l'on trouve dans la littérature spécialisée; quelques idées simples doivent servir de guide
pour adapter ces méthodes à un besoin spécifique;
– de donner un accès rapide et direct aux algorithmes, leur compréhension par leur utilisation sur un panel
d'applications concrètes.
Michel Ménard
Bruit moteur
k
p
+
y
x
L'objectif de ce TP est de découvrir et d'étudier des méthodes de traitements de signaux bruités. Nous
étudierons plus particulièrement le cadre du filtrage adaptatif avec notamment les algorithmes LMS et RLS.
Après une description théorique de ces deux algorithmes représentatifs du filtrage adaptatif, nous
aborderons l'étude de deux cas d'écoles et de 3 applications :
Les algorithmes adaptatifs vous seront utiles par la suite dans le TP de comunication numérique, notamment
pour égaliser un canal binaire symétrique.
1- Le filtrage adaptatif.
a- Introduction.
Le filtrage adaptatif représente aujourd'hui une part importante du traitement des signaux aléatoires.
L'évolution des processeurs de traitement du signal « DSP » a rendu leur réalisation aisée, et leur permet
d'agir sur des signaux rapides, à large spectre.
^y(k) e(k)
x(k) Filtre Algorithme de
numérique - mise à jour des
+
coefficients
y(k)
Figure 1
Une de leur application phare consiste en l'élimination d'un bruit dont les caractéristiques évoluent dans le
temps, ce qui n'est pas envisageable avec les structures non adaptatives; c'est à dire pour lesquelles les
coefficients sont figés. Cependant on les rencontre également dans les applications de prédiction de signal
ou d'identification de processus.
Le principe est simple :
Le signal d'erreur (voir figure 1) e(k) est utilisé avec l'entrée x(k) pour mettre à jour les coefficients du filtre.
Autrement dit, le signal x(k) d'entrée du filtre numérique « va servir à produire » une estimé de y(k). Les
coefficients du filtre numériques sont calculés et adaptés pour obtenir une erreur entre y(k) et son estimée la
plus faible possible. L'erreur va donc servir à ajuster ces coefficients.
Les différents types de filtres adaptatifs peuvent être classés selon:
1. l'algorithme utilisé pour le calcul des coefficients,
2. le critère retenu pour l'optimisation,
3. la structure utilisée pour concevoir le filtre numérique.
Bien souvent le critère d'opimisation et l'algorithme sont liés. Les critères et algorithmes les plus
fréquemment rencontrés sont:
– le critère des moindres carrés moyens (LMS) utilisant l'algorithme du gradient,
– le critère de moindre valeur absolue utilisant l'algorithme du signe,
– le critère des moindres carrés exacts utilisant les algorithmes récursifs (RLS).
L'algorithme le plus simple à mettre en oeuvre est sans doute l'algorithme du gradient.
e(k ) y (k ) yˆ (k )
e( k ) y ( k ) h t ( k ) x ( k )
L'optimisation consiste à minimiser un critère de coût J(k), choisi comme étant la somme des carrés de
l'erreur (Mean Square Error).
MSE E[ek2 ] E[( y k yˆ k ) 2 ]
E[ y k2 yˆ k2 2 y k yˆ k ]
C yy (0) E[ yˆ k2 ] 2 E[ yk yˆ k ]
n 1
Critère qui peut s'écrire également si l'on fait intervenir yˆ k h t (k ) x ( k ) hi xk i ; 0k
i 0
On recherche alors le vecteur des coefficients h(k) qui minimise J(k), ce qui revient à annuler la dérivée de J
(k) par rapport au vecteur h(k), soit dJ(k)/dh(k)=0.
n 1 n 1 n 1
MSE C yy (0) hi h j C xx (i j ) 2 hi C xy (i )]
i 0 j 0 i 0
n 1 n 1 n 1
MSE C yy (0) hi h j C xx (i j ) 2 hi C xy (i )]
i 0 j 0 i 0
MSE n 1
2 C xx (i k )hi 2C xy (k ); k 0,1,..., n 1
hk i 0
MSE n 1
0 2 C xx (i k ) hi 2C xy (k ); k 0,1,..., n 1
hk i 0
Soit sous forme matricielle (on peut ainsi obtenir les coefficients du filtre, hopt):
xx (k ) h t opt (k ) C xy (k ) 0
h t opt (k ) xx1 (k )C xy (k )
Cette expression fait apparaître les matrices d'autocorrélation Cxx(k) du signal d'entrée et d'intercorrélation,
Cyx(k), entre le signal d'entrée et le signal de référence. Ces matrices sont de dimensions (n,n).
L'écriture matricielle du vecteur optimum des coefficients est ainsi:
t
hopt xx1C xy
On recherche une écriture récursive des coefficients permettant d'obtenir le vecteur h(k) à partir du vecteur
obtenu une période d'échantillonnage plus tôt h(k-1).
On obtient l'algorithme LMS en recherchant une écriture récursive des coefficients permettant d'obtenir le
vecteur h(k) à partir du vecteur obtenue une période d'échantillonnage plutôt h(k-1).
e( k ) y ( k ) h t (k 1) x ( k )
h( k ) h( k 1) dx( k )e(k )
Où d représente le pas scalaire d'adaptation. e(k) est l'erreur a priori car calculée avec les coefficients de
l'instant d'échantillonnage précédent.
Il ne s'agit plus alors du critère des moindres carrés exacts, mais du critère des moindres carrés moyens.
2
0d
n x2
Le choix effectif de d résulte ensuite d'un compromis entre la rapidité d'adaptation, d'autant meilleure que d
est élevé, et la puissance de l'errreur résiduelle également proportionnelle à d.
Remarque
Le nom d'algorithme du gradient, associé à ce critère, provient du fait que le gradient du carré de l'erreur est
proportionnel au terme x(k)e(k) :
e 2 (k )
2 x t e(k )
h(k 1)
La différence essentielle que présente cet algorithme vis à vis de l'algorithme LMS vient du fait qu'il utilise
l'information contenue dans les précédents échantillons du signal d'entrée. Le résultat est une diminution du
temps de convergence par rapport à un filtre adaptatif LMS de même ordre. Par contre, cette amélioration
s'obtient au prix d'une complexité et d'un temps de calcul nettement augmentés.
Nous ne démontrerons pas les résultats suivants (se reporter aux livres de F.Michaut – Méthodes adaptatives
pour le signal, et à celui de M.Mokhtari – Contrôle de processus –). L'objectif de la démonstration est de
mettre à jour la matrice de covariance Cxx-1par récurrence.
L'algorithme récursif des moindres carrés exacts se résume aux équations suivantes:
ˆ xx1 ( k 1) x ( k )
g ( k )
1 x t (k ) ˆ xx1 ( k 1) x ( k )
ˆ 1
xx ˆ xx ( k 1) g ( k ) x ( k ) ˆ 1 ( k 1)
1 t
xx
h ( k ) h ( k 1) g ( k )[ y ( k ) h ( k 1) x ( k )]
t
e ( k ) y ( k ) k t ( k 1) x ( k )
Mise en oeuvre
Pour cela, il est nécessaire d'initialiser la matrice xx-1=kI, où I est la matrice identité (n,n) et k un coefficient
assez élevé pour assurer une convergence rapide de l'algorithme.
Si l'on ne dispose pas d'informations a priori sur les coefficients du filtre, ce qui est généralement le cas,
alors h(k)=0. Il suffit ensuite de calculer pour chaque période d'échantillonnage:
Gain d’adaptation
ˆ 1 ( k 1) x ( k )
g (k )
xx
Matrice d ’autocorrélarion ˆ 1 ( k 1) x ( k )
1 x ( k )
t
xx
ˆ 1 ˆ 1 ˆ 1 ( k 1)
xx xx ( k 1) g ( k ) x ( k )
t
xx
h ( k ) h ( k 1) g ( k )[ y ( k ) h ( k 1) x ( k )]
t
Vecteur des
coefficients e ( k ) y ( k ) k t ( k 1) x ( k )
Erreur a priori
Remarques
l'algorithme précédent s'adapte aux signaux stationnaires. Le gain d'adaptation est décroissant et prend
rapidement une faible valeur qui ne permet plus au filtre de s'adapter efficacement aux variations statistiques
du signal d'entrée.
D'autres méthodes sont envisageables quant à l'évolution du gain d'adaptation, afin de satisfaire une
adaptation correcte pour des signaux plus ou moins fortement non stationnaires, elles consistent à faire
intervenir un facteur supplémentaire l appelé facteur d'oubli. Ce coefficient est ainsi appelé car il permet
d'influencer la « mémoire » de l'algorithme. Il pourra être choisi de façon à suivre les variations statistiques
de l'entrée dans le cas non stationnaire : 0<l 1.
L'algorithme récursif des moindres carrés est alors modifié de la façon suivante, qui consiste à calculer pour
chaque période d'échantillonnage:
l1 ˆ 1 (k 1) x( k )
g (k )
xx
Matrice d ’autocorrélarion 1 t ˆ xx1 (k 1) x(k )
1 l x ( k )
ˆ 1 ˆ xx1 (k 1) l1 g (k ) x t (k )
ˆ xx1 ( k 1)
xx l1
e(k ) y (k ) k ( k 1) x( k )
t
Vecteur des
coefficients h(k ) h(k 1) g (k )e(k )
Erreur a priori
Cas fixe : la coefficient produit une pondération décroissante avec l'ancienneté des échantillons. Ce choix
convient aux variations lentes des caractéristiques du signal d'entrée.
Cas variable : l(k) tend vers 1 pour k élevé, ce qui correspond à une pondération apportée uniquement sur
les échantillons récents. Ce choix convient aux signaux stationnaires et produit une accélération de la
convergence en évitant une décroissance top rapide du gain d'adaptation.
x (k ) s(k ) bo cos( 0 k 0 )
bo (k ) b0 cos( 0 k 0 )
x r (k ) b cos( 0 k )
Le signal xr(k) est utilisé pour produire une image de l'interférence bo, afin de la soustraire à x(k) et obtenir
ainsi s(k). Le rapport signal sur bruit ainsi produit s'en trouve notablement amélioré.
x(k) + e(k)
-
y(k)
xr(k)
Filtre adaptatif
e( k ) x ( k ) y ( k )
• Mise à jour des n coefficients du filtre adapatif à partir de l'erreur et du signal de référence:
aˆ i (k 1) aˆ i (k ) dx r (k i )e(k ) i [0, n 1]
TRAVAIL A REALISER.
1. Compléter le programme ci-dessous d'élimination d'une interférence; vous devez programmer les
signaux et réaliser la boucle des itérations de calcul du filtre.
2. Relever sur les graphiques le nombre d'itérations nécessaire à l'établissement du régime permanent, ainsi
que le nombre d'échantillons. Faites évoluer le coefficient d'adpatation d.
3. Observer que le filtre rejecteur présente une atténuation maximale de 30 dB ente 60 et 70 rd/s.
4. Faites évoluer les différents paramètres du programme et des signaux. Etudier les autres points
importants du programme : nombre d'itération par période, période d'échantillonnage, fréquence de
l'interférence...
Exemples de résultats.
Remarques :
• Un signal aléatoire de variance 0.5 est utilisé comme signal informatif s(k).
• L'interférence sinusoidale s'écrit (k nombre de période de l'interférence, N nombre d'itération) :
•
2fk
b(k ) 0.5 sin
N 3
•
2fk
x r (k ) sin
N 4
TRAVAIL A REALISER.
5. Reprendre le programme précédent et l'adapter à ce nouveau problème. Faites attention les paramètres ne
sont pas nécessairement identiques. Vouc prendrez comme longueur de séquence N=1000, le nombre de
période du signal sinusoidal, 12, et une période d'échantilonnage égale à Te=0.0010.
Indication. Avant toute chose représenter le schéma de principe.
6. Relever sur les graphiques le nombre d'itérations nécessaire à l'établissement du régime permanent, ainsi
que le nombre d'échantillons. Faites évoluer le coefficient d'adpatation d.
7. Vers quel type de filtre doit tendre le filtre adaptatif. Quel est la fréquence du signal sinusoidal ?
8. Faites passer la pulsation du signal sinusoidal à 150 rd/s à partir de l'échantillon N/2=500 ceci afin de
vérifier l'adaptabilité du filtre vis à vis d'un signal informatif non stationnaire. Que constatez-vous ?
Conclure.
% Extraction d'un signal sinusoidal noyé dans un % Boucle des N itérations de calcul du filtre
bruit blanc h=zeros(N+1,n);
e(n)=0;
N=1000; % Longueur de la séquence
n=10; %10 % Ordre du filtre for i=n+1:N
k=12; % Nombre de périodes du sinus y(i)=0;
delta=0.001 % Facteur d'adaptation for j=1:n
Te=1e-3; % Période d'échantillonnage y(i)=y(i)+h(i,j)*xr(1,i-j+1);
h(i+1,j)=h(i,j)+delta*e(i-1)*xr(1,i-j+1);
GENERATION DES SIGNAUX ET CALCUL DU end
FILTRE. A FAIRE
e(i)=x(1,i)-y(i);
% Génération des signaux
end
figure(2) figure(4)
plot(0:N-n,xr(1,n:N),'r'), grid plot(0:N-n,h(n:N,1)), hold on
axis([0 800 -1.2 1.2]); plot(0:N-n,h(n:N,2),'r'), hold off
title('Signal de référence xr(k) en V') grid
xlabel('Echantillons'); title('Evolution des coefficients a(n-1) et a(n-2)')
xlabel('Echantillons');
figure(6)
plot(0:N-n,e(n:N)), hold on % Fonction de transfert du filtre obtenu
title('erreur e(k) en V') figure(5)
xlabel('Echantillons'); numl=fliplr(h(N,:));
sysl=tf(numl,1,Te);
figure(3)
plot(0:N-n,e(n:N)), hold on bode(sysl), hold off
plot(0:N-n,y(n:N)-b(n:N),'g'), hold on xlabel('Pulsation en rd/s');
plot(0:N-n,y(n:N),'r'), hold off ylabel('Phase en degrés; Module en DB');
grid title('Filtre synthétisé');
title('erreur e(k) et sortie y(k) en V')
xlabel('Echantillons');
Bruit moteur
k
p
+
y
x
A0 cos( 0 t )
TRAVAIL A REALISER.
9. Représenter le schéma de principe du filtrage adaptatif permettant d'annuler le bruit du moteur.
10.Reprendre les programmes précédents et adapter les à ce nouveau problème. Faites attention les
paramètres ne sont pas nécessairement identiques. Pour la génération des signaux, utiliser le code ci-
après.
Cette application consiste à utiliser un filtre adaptatif pour éliminer le bruit produit par un ventilateur dans
une conduite d'aération. Le ventilateur génère une onde acoustique qui se propage au sein de la conduite,
celle-ci pouvant d'ailleurs amplifier certaines composantes du bruit en entrant en résonance.
Conduite
Micro1 xr(t) Micro2
x(t)
y(t)
Filtre
adaptatif e(t)
Le bruit de conduite est capté par le microphone 1 afin d'être appliqué à l'entrée du filtre adaptatif (voir
figure : signal x(t)). La sortie du filtre y(t) génère le contre bruit visant à annuler le bruit résiduel dans la
conduite. Quant au microphone 2, il capte le bruit résiduel servant à adapter les coefficients du filtre pour
faire tendre e(t) vers zéro.
Modélisation de la conduite.
Le bruit produit par le ventilateur présente une fréquence fondamentale fonction de la vitesse de rotation et
du nombre de pales. Nous allons supposer que le ventilateur tourne à la vitesse de 25tr/s et comporte 6 pales
ce qui correspond à une fréquence fondamentale du bruit à 150 Hz.
Les harmoniques de ce bruit sont générées par passage du signal fondamental au travers d'une fonction non
linéaire « look-up table ». Un terme de gain symbolisera l'atténuation subie par le bruit entre l'emplacement
du microphone 1 et le haut parleur de contre bruit, la fonction « transport delay » symbolisera le temps de
propagation du signal sonore.
Le modèle SIMULINK de l'ensemble est présenté ci-dessous. Le filtre adaptatif est réalisé à l'aide d'une S-
fonction à laquelle nous passerons comme paramètres, la période d'échantillonnage Te, le coefficient d
d'adaptation du filtre et l'ordre n du filtre.
Le calcul du filtre lms se fait selon l'algorithme suivant qui calcule à chaque pas d'échantillonnage Te:
y (k ) h(k 1) x' (k )
h(k ) h(k 1) de(k ) x(k )
TRAVAIL A REALISER.
11.Effectuer les connexions sur le modèle SIMULINK proposé, conduite.mdl.
12.Dans le fichier lms2, compléter la partie « case 3 ». La sortie de la S-fonction est y(k)=sys=yf.
13.Effectuer la simulation sur une durée de 0.1ms avec les paramètres suivants passés à la S-fonction lms2:
Te=0.1 ms, d 0.0002, n100.
La période d'échantillonnage est choisie relativement faible devant celle du fondamental, afin de prendre
en compte un nombre important d'harmoniques. Le coefficient d'adaptation d est choisi faible pour
minimiser l'erreur résiduelle, en contre partie, la constante de temps d'adaptation du filtre sera élevée ce
qui importe peu du fait que le bruit est stationnaire.
Afficher les résultats de la simulation à l'aide du fichier conduite_1.m
14.Effectuer une simulation avec un bruit composite x(t) formé de la somme de trois signaux:
- un signal composite d'amplitude 2V et de fréquence 150 Hz,
- un signal sinusoidal d'amplitude 1V et de fréquence 300 Hz,
- un signal carré d'amplitude 1 V et de fréquence 1000 Hz.
Conclure en vous aidant de la densité spectrale de puissance de x(t).
Vous utiliserez les programmes : conduite.mdl, conduite.m et lms2.m
Programme LMS
% Filtrage adaptatif LMS
% Algorithme du gradient case{1,2,4,9} % Etapes non utilisées
function[sys,x0,str,ts]=lms2(t,x,u,flag,Te,delta,n) sys=[];
global err h xe yf otherwise
error(['Unhandled flag=',num2str(flag)]);
switch flag, end
case 0 % Etape d'initialisation
xe=zeros(1,n); % Fonction d'initialisation
h=zeros(1,n);
err=0; function [sys,x0,str,ts]=Initialisation(Te)
[sys,x0,str,ts]=Initialisation(Te); sizes=simsizes;
case 3 % Etape de calcul de la sortie sizes.NumContStates=0;
xe(1,n)=u(1); sizes.NumDiscStates=0;
yf=0; sizes.NumOutputs=1;
for j=1:n sizes.NumInputs=2;
yf=yf+h(1,j)'*xe(1,n-j+1); sizes.DirFeedthrough=1;
h(1,j)=h(1,j)+delta*err*xe(1,n-j+1); sizes.NumSampleTimes=1;
sys=simsizes(sizes);
end
x0=[];
err=u(2)-yf; str=[];
for j=1:n-1, ts=[Te 0];
xe(1,j)=xe(1,j+1);
end
sys=yf;
Fichier conduite_1.m
% Elimination d'un bruit de conduite f=(0:N-1)/(N*Te);
stem(f(1:50),xf(1:50))
load conduite.mat title('Spectre de xr(t)')
t=Signaux(1,:); xlabel('Frequence en Hz')
xr=Signaux(2,:); ylabel('Amplitude des composantes')
x=Signaux(3,:); figure(6)
xestime=Signaux(4,:); l=length(e);
e=x-xestime; ef=abs(fft(e(1:N),N))*2/N;
stem(f(1:50),ef(1:50))
% Représentation des signaux title('Spectre de e(t)')
figure(1) xlabel('Frequence en Hz')
plot(t,xr), grid ylabel('Amplitude des composantes')
xlabel('Temps'), ylabel('Amplitude en V')
title('Bruit mesuré par le micophone 1, xr(t)') % Densités spectrales de puissance
figure(2) figure(7)
plot(t,x), grid psd(xr,N,1/Te)
xlabel('Temps'), ylabel('Amplitude en V') title('Densité spectrale de puissance de xr(t)')
title('bruit se propageant dans la conduite, x(t)') xlabel('Frequence en Hz')
figure(3) ylabel('Module en dB')
plot(t,xestime), grid figure(8)
xlabel('Temps'), ylabel('Amplitude en V') psd(e(1:N),N,1/Te)
title('Contre bruit xestime(t)') title('Densité spectrale de puissance de e(t)')
figure(4) xlabel('Frequence en Hz')
plot(t,e), grid ylabel('Module en dB')
xlabel('Temps'), ylabel('Amplitude en V')
title('Erreur résiduelle mesurée par le microphone 2') % Puissances des bruits
Px=sum(xf.^2)/4;
% Représentation des spectres normalisés Pe=sum(ef.^2)/4;
figure(5) disp(['Puissance du bruit avant filtrage= 'num2str(Px)]);
N=512; disp(['Puissance du bruit après filtrage= 'num2str(Pe)]);
xf=abs(fft(xr,N))*2/N; disp(['Amélioration d''un facteur 'num2str(Px/Pe)]);
Exemples de résultats.
Ligne de transmission
Emetteur A Recepteur B
écho
écho
Recepteur A Emetteur B
Si l'on étudie l'élimination de l'écho produit uniquement dans le sens de communication poste A vers poste B
on peut implanter le filtre adaptatif comme présenté sur le schéma ci-après.
Emetteur A
Ligne de transmission x(t) Recepteur B
x(t)
Echo
Filtre adaptatif k.x(t)
e(t)
-
Recepteur A + Emetteur B
+
y(t)
Le signal x(t) et son écho k.x(t) sont très fortement corrélés. Par contre les signaux de l'émetteur y(t) et
l'écho k.x(t) sont fortement décorrélés si bien que le filtre s'adaptant pour annuler e(t) à partir de la référence
x(t) va faire tendre e(t) vers y(t) atténuant ainsi le signal d'écho présent sur la ligne de retour.
Le calcul du filtre lms se fait selon l'algorithme suivant qui calcule à chaque pas d'échantillonnage Te:
y (k ) h(k 1) x' (k )
h(k ) h(k 1) de(k ) x(k )
TRAVAIL A REALISER.
15.En vous aidant de l'application « élimination du bruit dans une conduite » représenter le modèle
SIMULINK (utiliser le fichier transmission.mdl).
16.Dans le fichier lms1, compléter la partie « case 3 ». La sortie de la S-fonction est y(k)=sys=yf.
17.Effectuer la simulation sur une durée de 0.5s avec les paramètres suivants passés à la S-fonction lms1:
Te=0.000125 ms, d 0.005, n10.
Le signal issu de l'émetteur A est sinusoidal d'amplitude unitaire et de fréquence 300 Hz. La ligne
introduit un retard de 1ms et le signal reçu x(t) produit un écho d'amplitude 0.833 x(t) ajouté au signal de
retour. Le signal issu de l'émetteur B est également sinusoidal d'amplitude unitaire mais de fréquence
1000 Hz.
Afficher les résultats de la simulation à l'aide du fichier echo1.m
18.Analyser les résultats
echo1.m. Permet l'affichage des différents signaux. Dans ada.mat vous devez préciser signaux.
% Elimination d'un bruit de conduite xlabel('temps')
Te=0.00025 ylabel('Amplitudes')
load ada.mat
t=signaux(1,:); figure(2)
xr=signaux(2,:); plot(t(1:floor(1/(10*Te))),xb(1:floor(1/(10*Te)))),
xb=signaux(3,:); hold on
y=signaux(4,:); title('Signal en sortie du filtre xb(t)')
yx=signaux(5,:); xlabel('Temps'), ylabel('Amplitude de xb')
ysortie=signaux(6,:);
l=length(t); figure(3)
plot(t(1:floor(1/(10*Te))),yx(1:floor(1/(10*Te)))),
% Représentation des signaux hold on
title('Signal emetteur + écho =xb(t)+y(t)')
figure(1) xlabel('Temps'), ylabel('Amplitude de xb(t)+y(t)')
plot(t(1:floor(1/(50*Te))),xr(1:floor(1/(50*Te)))),
hold on figure(4)
plot(t(1:floor(1/(50*Te))),y(1:floor(1/(50*Te)))), plot(t(1:floor(1/(20*Te))),ysortie(1:floor(1/
hold off, grid (20*Te))),'r'), hold on
axis([0 0.01 -1.2 1.2])
gtext('xr(t)'),gtext('y(t)') plot(t(1:floor(1/(20*Te))),y(1:floor(1/(20*Te)))),
title('Signaux reçu xr(t) et émis y(t)') hold off,grid
function[sys,x0,str,ts]=lms1(t,x,u,flag,Te,delta,n) sys=yf;
global err h xe yf case{1,2,4,9} % Etapes non utilisées
sys=[];
switch flag, otherwise
case 0 % Etape d'initialisation error(['Unhandled flag=',num2str(flag)]);
xe=zeros(1,n); end
h=zeros(1,n);
err=0; % Fonction d'initialisation
[sys,x0,str,ts]=Initialisation(Te);
function [sys,x0,str,ts]=Initialisation(Te)
case 3 sizes=simsizes;
xe(1,n)=u(1); sizes.NumContStates=0;
yf=0; sizes.NumDiscStates=0;
for j=1:n sizes.NumOutputs=1;
yf=yf+h(1,j)'*xe(1,n-j+1); sizes.NumInputs=2;
h(1,j)=h(1,j)+delta*err*xe(1,n-j+1) sizes.DirFeedthrough=-1;
sizes.NumSampleTimes=1;
end
sys=simsizes(sizes);
x0=[];
err=u(2)-yf; str=[];
ts=[Te 0];
for j=1:n-1,
Exemple de résultats.
TRAVAIL A REALISER.
19.Reprendre le cas d'école de l'extraction d'un signal noyé dans un bruit. Programmer le filtrage adaptatif
par la méthode RLS décrite dans la section 1d. Vous reprendrez les mêmes conditions sur le nombre
d'itérations, l'ordre du filtre et le nombre de période du signal sinusoidal que dans le cas LMS. On
rappelle ci-dessous les signaux appliqués au filtrage adaptatif.
La matrice d'autocorrélation inverse est initialisée à 10000I; I =matrice d'identité (n,n).
Le vecteur des coeffcients est initalisé à 0.
L'ordre du filtre étudié est de 200, et la fréquence d'échantillonnage de 1ms.
20.Etudier sa capacité à répondre à l'évolution fréquentielle du signal recherchée. Dans la boucle d'itération
rajoutée les lignes suivantes:
tr(1,i)=trace(Cxx);
if tr(1,i)<100
Cxx=100*eye(n)*Cxx/tr(1,i);
Conclure.
On rappelle ci-dessous les signaux appliqués au filtre adaptatif:
x (k ) A0 cos( 0 t 0 ) b(k )
x r (k ) A cos( 0 t )
Gain d’adaptation
ˆ xx1 ( k 1) x ( k )
Matrice d ’autocorrélarion g ( k )
1 x t ( k ) ˆ 1 ( k 1) x ( k )
xx
ˆ 1 ˆ 1 ˆ 1 ( k 1)
xx xx ( k 1) g ( k ) x ( k )
t
xx
h ( k ) h ( k 1) g ( k )[ y ( k ) h ( k 1) x ( k )]
t
Vecteur des
coefficients e ( k ) y ( k ) k t ( k 1) x ( k )
Erreur a priori