Vous êtes sur la page 1sur 17

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

TP1 : INITIATION MATLAB

1. Introduction
Matlab (abrviation de " MATrix LABoratory ") est un puissant logiciel de calcul numrique. Cest un environnement informatique conu pour le calcul matriciel. L'lment de base est une matrice dont la dimension n'a pas tre fixe. Matlab est un outil puissant qui permet la rsolution de nombreux problmes en beaucoup moins de temps qu'il n'en faudrait pour les formuler en C ou en Pascal. La programmation au mme titre que C, Pascal ou Basic. Par contre, sa singularit est quil sagit dun langage interprt, c'est--dire que les instructions sont excutes immdiatement aprs avoir t tapes. Le but de ce TP est de vous familiariser avec lutilisation de MATLAB.

1.1.

Lancement

Au lancement de Matlab, la fentre "command" apparat. C'est dans cette fentre que l'on peut taper les instructions Matlab ( la suite des chevrons >>). Fentre Command

1.2 . Langage interprt


Puisque Matlab est un langage interprt. Il n'est pas ncessaire de compiler un programme avant de l'excuter. Toute commande tape dans la fentre de commande est immdiatement excute.
1

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

La rponse est affiche si on ne met pas de point point-virgule en fin de ligne. Elle est de plus stocke dans une variable nomme ans (answer). La plupart des fonctions mathmatiques usuelles sont dfinies dans Matlab, et wer). ceci sous une forme naturelle (sin, cos, exp, ...). Cest galement le cas de certaines constantes comme pi par exemple :

1.2.

Les variables

On peut videmment indiquer le nom de la variable dans laquelle le rsultat doit tre stock (ce nom doit commencer par une lettre et occuper moins de 19 caractres). Remarque : Matlab distingue les minuscules des majuscules.

Le nom de la variable ainsi que le rsultat sont alors affichs. On peut taper plusieurs commandes par ligne si elles sont spares par un point virgule.

1.3.

Les variables complexes

Matlab travaille indiffremment avec des nombres rels et complexes. Par dfaut le variables i et j sont les initialises la valeur complexe. Naturellement si vous redfinissez la variable i ou j avec une autre valeur elle n'aura plus la mme signification.

Les fonctions usuelles de manipulation des nombres complexes sont prdfinies dans Matlab : real, imag, abs, dans angle (en radian), conj.

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

1.4.

Les vecteurs, les matrices et leur manipulation

En fait, toute variable de Matlab est une matrice (scalaire : matrice 1x1, vecteur : matrice 1xN ou Nx1). On peut spcifier directement une matrice sous la forme d'un tableau avec des crochets, l'espace ou la virgule spare deux lments d'une mme ligne, les points virgules sparent les lments de lignes distinctes.

Les lments d'une matrice peuvent tre n'importe quelle expression de Matlab :

Les lments d'une matrice peuvent ensuite tre rfrencs par leurs indices, on utilise alors des parenthses et non des crochets. Le mot-cl end peut tre utilis en indice pour signifier le dernier lment.

On peut remarquer que la taille du vecteur x a t ajuste en remplissant les lments non prciss par 0. On peut aussi crer des matrices avec les fonctions zeros, ones et eye, ces fonctions crent des matrices de la taille prcise, respectivement remplies de zros, de un, et de un sur la diagonale et de zros ailleurs (eye =prononciation anglaise de I comme identit).

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

On peut avoir des informations sur la taille d'une matrice :

On peut ajouter des lignes et des colonnes des matrices dj existantes (attention, les dimensions doivent toutefois tre compatibles ...).

1.5.

L'oprateur " : "

L'oprateur " : ", sous Matlab, peut tre considr comme l'oprateur d'numration. Sa sy syntaxe usuelle est : deb:pas:fin . Il construit un vecteur dont le premier lment est deb puis deb+pas, deb+2*pas... jusqu' deb+n*pas tel que deb+n*pas < fin < deb+(n+1)*pas. : est trs utile pour construire des signaux.

Le pas d'incrmentation peut tre omis, un pas de 1 est alors pris par dfaut : ut
4

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

On peut aussi utiliser le " : " pour slectionner des lments d'un vecteur ou d'une matrice :

1.6.

Oprations matricielles

Les oprations usuelles sont dfinies de faon naturelle pour les matrices :

Autres fonctions utiles pour les oprations matricielles

renverra un vecteur ligne dont chaque lment sera le maximum de la colonne correspondante. De la mme faon est dfinie la fonction min().

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

2. Affichages graphiques et alphanumriques 2.1. Affichage alphanumrique

On peut afficher des chanes de caractres dans la fentre de commande :

Les fonctions sprintf et fprintf existent galement

On peut aussi demander des valeurs l'utilisateur :

Matlab affichera la chane de caractre entre en paramtre et attendra une rponse de l'utilisateur. 2.2. Affichages graphiques de courbes 1D

Matlab permet un grand nombre de types d'affichage 1D et 2D, seuls les plus courant seront dcrits ici. La commande plot permet l'affichage d'une courbe 1D : met

On peut ajouter un titre aux figures ainsi que des labels aux axes avec les commandes title, xlabel, ylabel:

2.3.

Affichages graphiques de courbes 2D

Avec la commande mesh on peut aisment avoir une reprsentation d'une fonction 2D. Cependant il faut construire la grille des coordonnes des points en lesquels on a les valeurs de la fonction l'aide de la fonction meshgrid.
6

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

2.4.

Affichage de plusieurs courbes

On peut bien videmment vouloir afficher plusieurs courbes l'cran. Pour cela deux solutions s'offrent nous. deux On peut effectuer plusieurs affichages sur une mme figure en utilisant la commande subplot qui subdivise la fentre graphique en plusieurs sous figures. Sa syntaxe est : entre subplot(nombre_lignes,nombre_colonnes,numro_subdivision).Les subdivisions sont numrots de 1 nombre_lignes*nombre_colonnes, de la gauche vers la droite puis de haut en bas.

On peut aussi ouvrir une deuxime fentre graphique l'aide de la commande figure. Le passage d'une fentre l'aide graphique une autre pourra alors se faire la souris ou en prcisant le numro correspondant dans la commande figure(n). NB : on peut galement superposer plusieurs courbes sur le mme rfrentiel, en utilisant la commande hold on (resp. hold off).

3. Environnement de travail, scripts et fonctions


3.1. Rpertoire de travail Il est indispensable de travailler dans votre propre rpertoire et non dans le rpertoire de Matlab De mme Matlab. dans votre rpertoire vous pouvez organiser vos fichiers dans des sous rpertoires. Pour que vos fonctions et scripts soient accessibles partir de la ligne de commande Matlab il faut le rpertoire dans lequel vous allez travailler, en utilisant les commandes cd et dir.

3.2.

Sauvegarde et chargement de variables

Il peut tre utile, lors d'une session de travail, de sauvegarder des variables dans des fichiers du rpertoire de travail. Cela peut tre ralis l'aide de la fonction save dont la syntaxe est : save nom_fichier nom_variables .
7

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

Si le nom des variables est omis, tous l'espace de travail est sauv; si l'extension du fichier est omise elle sera automatiquement .mat, si de plus, le nom du fichier est omis, la sauvegarde se fera dans le f fichier matlab.mat. Pour recharger des variables sauves dans un fichier, il suffit de taper :

Si le nom du fichier est omis, Matlab chargera le fichier matlab.mat. On peut un moment donn vouloir connatre toutes les variables disponibles dans l'espace de travail. Cela est possible grce aux commandes who l'espace et whos. La commande who nous donne le nom de toutes les variables existantes, tandis que whos nous donne leur nom et l'espace mmoire qu'elles occupent.

3.3.

Scripts

Il est parfois (souvent) souhaitable, pour ne pas avoir taper plusieurs fois une mme squence d'instructions, de la stocker dans un fichier. Ainsi on pourra rutiliser cette squence dans une autre session de travail. Un tel fichier est dnomm script. Sous windows, il suffit d'ouvrir un fichier avec le menu file, new, de taper la squence de commande et de sauver le fichier avec une extension " .m " (nom_fich.m). En tapant le nom du fichier sous Matlab, la suite d'instructions s'excute. Les variables dfinies dans l'espace de travail sont dfinies accessibles pour le script. De mme les variables dfinies (ou modifies) dans le script sont accessibles dans l'espace de travail. On peut (doit) mettre des commentaires l'aide du caractre pour pour-cent " % ". Toute commande situe aprs " % " n'est pas prise en compte par Matlab, jusqu' la ligne suivante. mmande

3.4.

Fonctions

On a parfois (souvent) besoin de fonctions qui ne sont pas fournies par Matlab. On peut alors crer de telles fonctions dans un fichier spar et les appeler de la mme faon que les fonctions prexistantes. La premire appeler ligne (hormis les lignes de commentaires) d'une fonction doit imprativement avoir la syntaxe suivante :

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

Exemple de fonction :

Cette fonction pourra tre appele par :

Exemple de fonction plusieurs variables de sortie :

Cette fonction pourra tre appele par :

Le nom de la fonction doit imprativement tre le mme que le nom du fichier dans lequel elle est stocke (sinon Matlab ne prendra pas en compte ce nom mais uniquement celui du fichier). Les nombres d'arguments en entre et en sortie ne sont pas fixes et peuvent tre rcuprs par nargin et nargout. Cela nous permet donc de faire des fonctions Matlab pouvant dpendre d'un nombre variable de paramtres. Les variables de l'espace de travail ne sont pas accessibles la fonction sauf si elles sont entres comme variables d'entre. De mme les variables dfinies dans une fonction ne sont pas accessibles dans l'espace de travail travail.

4. Boucles et contrles
Comme de nombreux autres langages de programmation, Matlab possde trois types d'instructions de contrles et de boucles : for, if et while.

4.1.

Contrle : " if "

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

La condition est exprime au travers d'une expression logique. Les expressions logiques sont des expressions quelconques pour lesquelles on considre uniquement le fait qu'elles soient nulles (expression fausse) ou non (expression vraie). On peut aussi construire ces expressions l'aide des oprateurs logiques et (&), ou (|), gal struire (==), suprieur (>,>=), infrieur(<,<=), non(~), ou exclusif (xor) ou l'aide de fonctions logiques prdfinies exist, any, find , isinf, isnan...

4.2.

Boucle : while

La suite dinstructions est rpte un nombre indfini de fois jusqu ce que lexpression logique soit fausse. e 4.3. Boucle : "for"

La boucle for a pour syntaxe :

Cette structure de contrle est trs utile, mais il est recommand d'viter au maximum les boucles dans Matlab, car elles sont trs lentes par rapport un traitement matriciel. Par exemple, la boucle suivante :

est quivalente

Mais s'excutera beaucoup plus lentement. Essayez avec N = 10, 100, 1000, etc. et comparez les temps. Malheureusement, on ne rencontre pas toujours des cas aussi simples et il est difficile de penser matriciel, c'est dire penser en Matlab. Les fonctions zeros et ones, permettent parfois d'viter de mettre en uvre une boucle. Par exemple, au lieu de faire la boucle :

10

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

On peut crire :

De plus certaines fonctions Matlab agissent sur une matrice en tant que suite de vecteurs. Ainsi

nous donne le mme rsultat (mais en moins de temps) que :

5. Help / Aide en ligne


Matlab est pourvu d'une fonction d'aide trs utile : help. Ainsi si vous tapez help sur la ligne de commande apparaissent tous les rpertoires accessibles depuis Matlab ainsi qu'une explication concernant ces rpertoires. qu'une Si vous tapez help suivi du nom d'un rpertoire, Matlab affiche une explication brve sur toutes les fonctions et scripts de ce rpertoire. Enfin si vous tapez help suivi du nom d'un fichier (script ou fonction) apparat une fonction), explication dtaille sur l'utilisation de la fonction ou du script. De plus vous pouvez crer une aide sur les fonctions et scripts que vous crez et sur vos rpertoires. Pour une fonction, Matlab prendra comme help toutes les lignes de commentaires suivant l'instruction function (en premire ligne). Pour un script, Matlab prendra mentaires toutes les lignes de commentaires placs en dbut de fichier. Ces aides que vous crez pour vos fonctions et scripts sont intressantes pour un utilisateur ventuel, mais aussi pour vous, pour vous rappeler le but de telle ventuel, fonction ou pour vous souvenir de sa syntaxe. Exemple simple :

11

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

TP2 : GNRATION DES SIGNAUX

Ce TP a pour but de familiariser l'tudiant avec l'utilisation du logiciel MATLAB pour la gnration des diffrents types de formes d'ondes. The Signal Processing Toolbox de MATLAB contient des fonctions pour la gnration des formes d'ondes couramment utilises priodiques et non priodiques, squences (impulsion, chelon, rampe), train d'impulsions

1. Gnration des signaux : Impulsion Unit et Echelon Unit


Deux signaux lmentaires de base sont : limpulsion Unit et lchelon Unit. Limpulsion unit u[n] de longueur N peut tre gnre en utilisant la commande MATLAB suivante : u = [1 zeros(1,N-1)] ; De mme, limpulsion unit ud[n] de longueur N et dcales de M chantillons, tel que M<N, peut tre gnre par la commande MATLAB suivante : ud = [zeros(1,M) 1 zeros(1,N-M-1)];

Lchelon unit s[n] de longueur N peut tre gnr en utilisant la commande MATLAB suivante : s=[ones(1,N)] La version dcale de lchelon unit sobtient de la mme manire que dans le cas de limpulsion unit. Le programme P1 peut tre utilis pour gnrer et tracer un signal impulsion unit : *********************************************************************** %Programme P1 % Gnration d'une impulsion unit % Gnration d'un vecteur de -10 20 n=-10:20; % Gnration de l'impulsion unit
12

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

u = [zeros(1,10) 1 zeros(1,20)];
% Tracer le signal gnr stem(n,u); xlabel('Temps index en n'); ylabel('Amplitude'); title('Impulsion Unit'); axis([-10 20 0 1.2]); ****************************************************************** Application : 1- Modifier le programme prcdent pour gnrer une impulsion unit dcale de 11 chantillons. Excuter le programme et tracer le signal gnr. 2- Modifier le programme prcdent pour gnrer un chelon unit dcal de 20 chantillons.

2. Gnration des signaux priodiques Une autre classe de signaux trs utile en traitement du signal et en automatique sont les signaux sinusodaux de la forme :

x[n]= A.cos(0 n+ )
Avec MATLAB, ce type de signaux peut tre gnr en utilisant les oprateurs trigonomtriques cos et sin. Le programme P2 est un exemple qui gnre un signal sinusodal. ************************************************** % Programme P2 % Gnration d'un signal sinusodal n = 0:100; f = 0.1; phase = 0; A = 1.5; arg = 2*pi*f*n - phase; x = A*cos(arg); clf; %efface lancienne figure
13

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

stem(n,x); axis([0 100 2 2]); grid; title(Signal Sinusoidal); xlabel(Temps index en n); ylabel(Amplitude) ; axis ; ****************************************************** Application : 1- Modifier le programme prcdent pour gnrer et tracer un signal sinusodal de longueur 50, frquence 0.08, amplitude 2.5 et phase dcale de 90 degrs. 2- Gnrer et tracer les squences dfinies ci dessus :

x1 (n )=sin n 17 x2(n)=sin n 17

( )

0n35 15n25

( )

x3 (n)=sin 3n+ 2

15n15 0n50

x4(n)=sin n 23

En plus des fonctions sin et cos, le toolbox de MATLAB offre d'autres fonctions qui produisent des signaux priodiques comme sawtooth et square. La fonction sawtooth gnre une onde triangulaire avec des maximums en +-1 et une priode de 2*pi. La fonction square gnre une onde carre avec une priode de 2*pi. Un paramtre optionnel spcifie le cycle, la priode en pourcent pour laquelle le signal est positif. Le programme P3 gnre 1.5 secondes d'onde triangulaire (respectivement carr), de frquence 50Hz et avec une frquence d'chantillonnage de 10KHz.

14

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

*************************************************************************** %Programme P3 fs = 10000; t = 0:1/fs/1.5; x1 = sawtooth(2*pi*50*t); x2 = square(2*pi*50*t); subplot(211), plot(t,x1), xlabel('Time (sec)'); ylabel('Amplitude'); title('Sawtooth Periodic Wave') subplot(212), plot(t,x2), xlabel('Time (sec)'); ylabel('Amplitude'); title('Square Periodic Wave') ************************************************************************ 3. Gnration des signaux exponentiels Un autre type de signaux de base sont les signaux exponentiels. Ce type de signaux peut tre gnr par les oprateurs de MATLAB .^ et exp . Le programme P4 est employ pour gnrer un signal exponentiel x[n] = A exp(jn) valeurs complexes. **************************************************************** % Programme P4 % Gnration d'un signal exponentiel complexe c = -(1/12)+(pi/6)*i; k = 2; n = 0:100; x = k*exp(c*n); subplot(2,1,1); stem(n,real(x)); xlabel (Temps index en n); ylabel(Amplitude); title(Partie relle) ; subplot(2,1,2); stem(n,imag(x)); xlabel (Temps index en n) ; ylabel(Amplitude) ; title (Partie imaginaire) ; *******************************************************************
15

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

Le programme P5 gnre lui une squence exponentielle valeurs relles partir de lexpression suivante : X[n]=A.n *********************************************************************** % Programme P5 % Gnration d'une squence exponentielle valeurs relles n = 0 : 35; a = 1.2; k = 0.2; x = k*a.^n; stem(n,x) xlabel (Temps index en n); ylabel(Amplitude); ************************************************************************* 4. Gnration des signaux alatoires Un signal alatoire de longueur N avec une distribution uniforme dans lintervalle [0 1] peut tre gnr par la commande de MATLAB suivante : x = rand(1,N) ; De mme, u signal alatoire x[n] de longueur N avec une distribution normalise moyenne nulle et variance unit peu tre gnr en utilisant la commande suivante de MATLAB : x = randn (1,N) ; Application : Gnrer et tracer un signal alatoire de longueur 100 tels que ces lments sont uniformment distribus dans lintervalle [-2,2]. 5. Gnration des signaux complexes Des signaux complexes peuvent tre gnrs en utilisant les oprations faites pour les signaux lmentaires. Par exemple un signal de modulation damplitude peut tre gnr par la modulation dun signal sinusodal de haute frquence xH[n] = cos(Hn) avec un signal sinusodal de basse frquence xB[n] = cos(Bn). Le signal rsultant y[n] a la forme suivante : y[n] = A(1+m xB[n]) xH[n] = A(1 + m cos(Bn)) cos(Hn)

16

Ecole Nationale des Sciences de lInformatique Module : Mathmatiques pour lingnieur Classes : II1 AU : 2012/2013

avec m, appel facteur de modulation, est choisi pour sassurer que lexpression (1+m xB[n]) est positive pour toutes les valeurs de n. Le programme P6 est utilis pour gnrer un signal modul en amplitude. ************************************************************** % Programme P6 % Gnration dun signal modul en amplitude clf ; n = 0 :100 ; m = 0.4 ; fH = 0.1 ; fL = 0.01 ; xH = sin(2*pi*fH*n); xL = sin(2*pi*fL*n); y = (1+m*xL).*xH; stem(n,y); grid; xlabel(Temps index en n); ylabel(Amplitude); ************************************************************** Application : Gnrer et tracer un signal de modulation damplitude de frquence fH=0.08 et fL=0.04 et de facteur de modulation m=0.5. Interprter.

17

Vous aimerez peut-être aussi