Vous êtes sur la page 1sur 9

TP Matlab N˚1

Xavier Bourgeois
Kamil Kaderbay

3 ETI Groupe D
Octobre 2011

Table des matières


1 Familiarisation avec Matlab 2

2 Factorisation de Cholesky 2
2.1 Construction d’une matrice SDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Matrice opposée de la dérivée seconde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.3 Matrice SDP définie par un paramètre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

3 Méthode des moindres carrés 4


3.1 Vecteur d’erreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 Droite moyenne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

4 Isométries du plan 5
4.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2 Application à un triangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.3 Application pour générer plusieurs polygônes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

5 Diverses opérations de filtrage 7


5.1 Filtre moyenneur matriciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.2 Filtre moyenneur par convolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.3 Dérivation d’un signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

6 Conclusion 9

1
1 Familiarisation avec Matlab
L’objectif de ce TP était de nous initier à l’utilisation de Matlab ainsi qu’à l’application de méthodes de
calcul à l’aide de celui-ci. Nous avons traité des exemples de factorisations de Cholesky, puis des exemples
d’approximations de nuages de points par la méthode des moindres carrés. Ensuite on a traité des isométries
du plan, et des opérations de filtrage de signal. L’utilisation de scripts est fortement conseillée, cela permet
de travailler sur de gros algorithmes en ayant tout sous les yeux, tout en pouvant modifier rapidement des
paramètres.

2 Factorisation de Cholesky
2.1 Construction d’une matrice SDP
La factorisation de Cholesky est applicable aux matrices symétriques et définies positives (notées SDP).
Une matrice A qui est SDP, peut s’écrire A = C t C. De plus, A est SDP, si, et seulement si, ses valeurs propres
sont réelles et strictement positives. Nous nous sommes servis de cette propriété pour générer une matrice
SDP A ∈ M2x2 .
1 A=rand ( 4 , 4 ) ; %i n i t i a l i s a t i o n e t a f f e c t a t i o n de l a m a t r i c e
2 while (min( eig (A) ) <= 0 ) %on v é r i f i e l a c o n d i t i o n s u r l e s v a l e u r s p r o p r e s
3 disp ( " Boucle , M a t r i c e non SDP " ) ;
4 A = rand ( 4 , 4 ) ; %t a n t que l a m a t r i c e n ’ e s t pas SDP, on recommence
5 end

Nous avons aussi remarqué une autre méthode pour vérifier si une matrice est SDP, en faisant appel à la
fonction chol() : elle renvoie une variable p, qui est nulle, si et seulement si, la matrice passée en paramètre
est SDP.
Remarque : On ne teste pas la nullité, la probabilité que la fonction rand() retourne une valeur nulle tendant
vers zéro.

2.2 Matrice opposée de la dérivée seconde


On crée une matrice 4 × 4, opposée de la dérivée seconde, puis on en effectue la décomposition de Cholesky.
1 >> D=diag ( [ 2 , 2 , 2 , 2 ] ) + diag(−1∗ o n e s ( 3 , 1 ) , 1 ) + diag(−1∗ o n e s ( 3 , 1 ) , − 1 )
2

3 D =
4

5 2 −1 0 0
6 −1 2 −1 0
7 0 −1 2 −1
8 0 0 −1 2
9

10 >> C=chol (D)


11

12 C =
13

14 1.4142 −0.7071 0 0
15 0 1.2247 −0.8165 0
16 0 0 1.1547 −0.8660
17 0 0 0 1.1180

Un calcul exact, à la main, abouti au même résultat. De même qu’un calcul de C t C permet de s’assurer
de la réversibilité de l’opération.
On remplace le terme de la premières ligne et colonne de la matrice précèdente par un 1.
1 >> E=[D+diag ( [ − 1 , 0 , 0 , 0 ] ) ] ;
2 >> chol (E)
3 1 −1 0 0
4 0 1 −1 0
5 0 0 1 −1
6 0 0 0 1

2
7

8 >> inv (E)


9 4 3 2 1
10 3 3 2 1
11 2 2 2 1
12 1 1 1 1

La factorisation C t C parraît naturelle en tant que moyen de vérification.


On peut remarquer que l’inverse de E est aussi une matrice SDP.

2.3 Matrice SDP définie par un paramètre


 
a 1 1 1
 1 a 1 1 
F =  1 1 a 1 

1 1 1 a
On trace une courbe des valeurs propres de ces matrices en fonction du paramètre a , en se rappellant
qu’une matrice est symétrique définie positive, si et seulement si, ses valeurs propres sont strictement positives.
1 F=diag ( [ a −1,a −1,a −1,a −1])+ o n e s ( 4 , 4 ) ;
2

3 f o r i = −100:100
4 a=i / 1 0 0 ;
5 D=o n e s ( 4 , 4 ) + diag ( ( a −1)∗ o n e s ( 4 , 1 ) ) ;
6 v=eig (D) ;
7 plot ( a , v , ’ bd ’ ) ;
8 end

Fig. 1 – Courbe des valeurs propres de la matrice, en fonction du paramètre

On remarque qu’il n’y a que deux courbes, d’où certaines valeurs propres sont de multiplicité comprise entre
2 et 3. On peut
vérifier rigoureusement celà en calculant le polynôme caractéristique de cette matrice.
a−λ 1 1 1

1 a−λ 1 1
|F − λI4 | = = (a − λ + 3)(a − λ − 1)3
1 1 a−λ 1
1 1 1 a−λ
On remarque bien que la plus petite valeur propre a - 1 est d’ordre de multiplicité trois. Pour que toutes les
valeurs propres soient strictement positives, il faut que le paramètre a soit strictement supérieur à 1.

3
3 Méthode des moindres carrés
Cette méthode permet d’acquérir des données expérimentales, généralement entachées d’erreurs de mesure,
et de les relier à un modèle mathématique censé décrire ces données.
Ondonne les pointssuivants : A1 (1, 0), A2 (2, 0) , A3 (2, 1) , A4 (3, 1), puis on pose :
 quatre 
1 1 0  
 2 1   0  a
M =   , N =   et X =
  Puis on cherche la droite d’équation y = ax + b approximant
2 1  1 b
3 1 1
le mieux le système.
1 >> M= [ 1 , 1 ; 2 , 1 ; 2 , 1 ; 3 , 1 ] ;
2 >> N = [ 0 ; 0 ; 1 ; 1 ] ;
3 >> X=inv (M’ ∗M) ∗M’ ∗N
4 0.50000
5 −0.50000

Le vecteur X nous donne l’équation de la droite y = 0.5x − 0.5 approximant tous les points donnés.

3.1 Vecteur d’erreur


On cherche la norme du vecteur d’erreur E = M X − N . Avec les points donnés et la droite moyenne
calculée, on a kEk = √12 . Pour vérifier expérimentalement le minimum du vecteur d’erreur E pour le vecteur
solution X trouvé précedemment, on ”balaye” arbitrairement les coefficients a et b.
1 k=1;
2 tv=zeros ( 1 , 1 0 0 ) ; %d é c l a r a t i o n d ’ un t a b l e a u de 100 c a s e s
3 f o r a = −5:0.5:5
4 f o r b = −5:0.5:5 %b o u c l e i m b r i q u é e dans l a p r é c é d e n t e
5 X=[a ; b ] ;
6 tv ( k)=norm(M∗X−N ) ; %norme du v e c t e u r d ’ e r r e u r E
7 k=k+1;
8 end
9 end
10 min( tv ) %a f f i c h a g e de l ’ e r r e u r minimale

On obtient ainsi une erreur minimale kEk = √1 , d’où la methode de calcul donnée permet d’atteindre ce
2
minimum.

3.2 Droite moyenne


On affiche les points donnés et la droite calculée sur le même graphique :
1 hold on ; % permet d ’ a f f i c h e r p l u s i e u r s f i g u r e s s u r l e même g r a p h i q u e .
2 M= [ 1 , 1 ; 2 , 1 ; 2 , 1 ; 3 , 1 ] ; %p o i n t s donnés
3 N= [ 0 ; 0 ; 1 ; 1 ] ;
4 X=inv (M’ ∗M) ∗M’ ∗N;
5 plot ( [ 0 , 0 , 1 , 1 ] , [ 1 , 2 , 2 , 3 ] , ’ b∗ ’ ) ; %p o i n t s donnés
6 plot (X( 1 ) ∗ [ − 1 , 2 ] , −1/X( 2 ) ∗ [ − 1 , 2 ] , ’ r− ’ ) ; %d r o i t e moyenne

4
Fig. 2 – Droite moyenne

Des résultats avec plus de points donnent un écart qui tend vers 1 quand les points sont très espacés, et tend
vers 0 quand les points sont alignés. En général, pour une approximation affine, les résultats sont satisfaisants.

4 Isométries du plan
      
X1 X2 X3 cos(α) − sin(α) x1 x2 x3 a a a
= +
Y1 Y2 Y3 sin(α) cos(α) y1 y2 y3 b b b

4.1 Principe
On donne un polygone tr sous la forme d’une matrice 2 × n. On définit un angle α aléatoire, tel que
α ∈ [−π; +π], puis on lui associe une matrice de rotation Rot ∈ M2×2 . On multiplie la matrice Rot par
la matrice tr pour obtenir un triangle ’pivoté’ d’un angle aléatoire. Par la suite, on définit une matrice de
translation, de mêmes dimensions que la matrice définissant le triangle tr. Chaque ligne de cette matrice
contient un coefficient aléatoire. On somme cette matrice à celle contenant le triangle ’pivoté’, pour obtenir le
triangle final, ’pivoté’ et ’translaté’ aléatoirement.

4.2 Application à un triangle


On utilise le principe précèdent avec un triangle de sommets (0, 0) ; (1, 1) ; (2, 0) .

5
Fig. 3 – Isométrie d’un triangle

On affiche le triangle original, et le triangle transformé pour vérifier qu’ils ne sont pas confondus, et qu’ils
sont bien superposables.

4.3 Application pour générer plusieurs polygônes


L’algorithme précédent est généralisable à tous types de polygones en deux dimensions. On utilise un motif
de feuille à 10 points, que l’on a déterminé à l’aide d’une photographie. On détermine ensuite des couleurs
aléatoirement, avec des coefficients pour obtenir un marron-vert.
1 hold on ; %a f f i c h a g e rémanant
2 for i = 0:100 %101 f e u i l l e s
3 %p a r a m è t r e s a l é a t o i r e s
4 a l=pi ∗ ( rand ( 1 ) − 0 . 5 ) ; %a n g l e de r o t a t i o n
5 r o t =[ cos ( a l ) −sin ( a l ) ; sin ( a l ) cos ( a l ) ] ; %m a t r i c e de r o t a t i o n
6 c o u l e u r = [ 0 . 5 ∗ rand ( ) , 0 . 9 ∗ rand ( ) , 0 . 2 ∗ rand ( ) ] ; %c o u l e u r
7 %f e u i l l e
8 f e u i l l e 2 =r o t ∗ f e u i l l e + 10∗rand ( 2 , 1 ) ∗ o n e s ( 1 , a ) ; %t r a n s f o r m a t i o n
9 f i l l ( f e u i l l e 2 (1 ,1: a ) , f e u i l l e 2 (2 ,1: a ) , couleur ) ; %a f f i c h a g e
10 end

6
Fig. 4 – Motif de feuille

Ensuite, effectue cette transformation en boucle pour environ 100 images, pour générer un tapis de feuilles
mortes.

Fig. 5 – Tapis de feuilles mortes

5 Diverses opérations de filtrage


On a généré un sinus bruité, équivalent à une mesure dans des conditions peu idéales, et on désire le filtrer,
pour atténuer le bruit, à haute fréquence.

5.1 Filtre moyenneur matriciel


La première méthode moyenne chaque échantillon avec ses L−1 L−1
2 échantillons précédents et ses 2 suivants,
avec L défini comme une pseudo constante de temps. Ceci explique pourquoi on prend L impair, pour calculer
une moyenne sur un nombre d’échantillons entiers.
1 L=7; %p é r i o d e du f i l t r e ( c o n s t a n t e de temps )
2 L1=(L+1)/2;
3 %moyennage par une m a t r i c e " d i a g o n a l e −bande "
4 m=(1/L) ∗ t o e p l i t z ( [ o n e s ( 1 , L1 ) , zeros ( 1 , T−L1 ) ] ) ;

7
5 s 1=m∗ s ’ ;

Plus la période du filtre L, en nombre d’éléments est grande, plus le filtre est ”lent”, et coupe à une fréquence
basse.

Fig. 6 – Filtre coupant à haute fréquence

Fig. 7 – Filtre coupant à basse fréquence

On retrouve les caractéristiques des filtres analogiques passe-bas, avec une avance de phase dans la bande
”coupée”.

5.2 Filtre moyenneur par convolution


Ici, on retrouve le même fonctionnement que le filtre moyenneur matriciel et les filtres analogiques passe-
bas. La seule différence notable avec le filtre matriciel est la présence d’effets de bord liés à la convolution. On
peut réfléchir quand à la rapidité d’application des deux filtres.

5.3 Dérivation d’un signal


Lorqu’on dérive un signal bruité, on garde les variations de ce signal, et comme le bruit varie a une fréquence
élevée devant celle du signal, on amplifie le bruit lors de chaque dérivation.

8
1 deb =0; f i n =20; pas = 0 . 1 ;
2 a =0.0005; %b r u i t
3 b= −0.5; %o f f s e t
4 c =0.05; %rampe
5 s=b+c ∗ t+sin ( t )+a∗randn ( 1 , length ( t ) ) ;
6 plot ( t , s ) ; %o r i g i n a l b l e u
7 m=[1 , −1]/( pas ) ; %m a t r i c e de d é r i v a t i o n
8 s 1=conv (m, s ) ;
9 s 2=conv (m, s 1 ) ;
10 s 1 t=s 1 ( 1 , 2 : end ) ;
11 plot ( t , s 1 t , ’ r ’ , ’ l i n e w i d t h ’ , 2 ) ; %r o u g e d é r i v é e p r e m i è r e
12 s 2 t=s 2 ( 1 , 2 : end−1);
13 plot ( t , s 2 t , ’ k ’ ) ; %n o i r d é r i v é e s e c o n d e

Fig. 8 – Dérivations successives d’un signal bruité

En rajoutant une rampe et un offset au signal original (bleu), on se rend compte qu’après plusieurs dérivations,
on perd des informations sur ce signal (bien que cela puisse être utile).

6 Conclusion
On a appris à utiliser les bases de Matlab pour les appliquer au cours d’algèbre linéaire. Matlab est très
utile pour effectuer des calculs quand les dimensions empêchent de les effectuer à la main. Il faut aussi ne pas
oublier que Matlab interprête directement les instructions. Pour l’exemple du ”tapis de feuilles mortes”, il faut
près de dix minutes pour génèrer 10 000 feuilles. Alors qu’il faut autour de 200 milisecondes pour afficher une
image formée de 100 000 à 400 000 triangles dans un jeu video récent.

Vous aimerez peut-être aussi