Ini Matlab
Ini Matlab
Ini Matlab
CACHAN
Geii1
I-Introduction
Le nom MATLAB1 est l’abréviation de « Matrix Laboratory ». Il s’agit d’un logiciel de calcul
spécialement conçu pour le calcul matriciel, et donc2 parfaitement adapté à l’analyse de circuits, au
traitement du signal , à l’automatique et à bien d’autres domaines. Sa simplicité de mise en œuvre et sa
puissance en font un outil de programmation tout aussi performant que le C ou PASCAL et se révèle très
performants pour les tracés graphiques.
Ce document propose un rapide tour des possibilités de MATLAB que nous aurons l’occasion
d’approfondir tout au long de la formation.
Le programme de lancement s’appelle matlab.exe et peut être exécuté en cliquant sur l’icône :
Après exécution de MATLAB, il apparaît une fenêtre de commande dans laquelle apparaît des
chevrons >>. L’interpréteur attend alors des instructions de votre part que nous allons donc découvrir.
Lorsque MATLAB affiche des chevrons >>, vous pouvez taper n’importe quelle expression
mathématiques suivi de la touche enter pour un calcul immédiat : Il s’agit ici d’un fonctionnement
identique à votre calculatrice scientifique.
Exemples : Commentaires :
» 1+1
ans =
» 2*cos(pi/4)
ans =
1.4142
MATLAB propose la possibilité de stocker les résultats dans une variable dont on peut choisir son
nom en respectant les critères suivants :
•Le nom doit obligatoirement commencer par une lettre mais peut contenir des nombres
•Le nom ne peut pas excéder plus de 19 caractères
•MATLAB voit les majuscules, x est donc différent de X
MATLAB permet la création dynamique de variable et il n’y a pas à se soucier du type de cette variable.
1
MATLAB est un produit de The Mathworks Inc
2
On peut être surpris de cette relation si l’on débute en électronique
IUT CACHAN / Initiation à MATLAB / S.POUJOULY
Exemples Commentaires
» x=pi/6
x =
0.5236
» y=cos(x);
» y^2
ans =
0.7500
La commande whos permet de lister toutes les variables utilisées dans la session MATLAB en cours :
» whos
Name Size Elements Bytes Density Complex
ans 1 by 1 1 8 Full No
x 1 by 1 1 8 Full No
y 1 by 1 1 8 Full No
Bien entendu il est possible de supprimer des variables en utilisant l’instruction clear. Utilisée toute
seule cette instruction supprime toutes les variables situées dans votre espace de travail. Pour effacer
sélectivement il suffit de taper le nom de la variable après l’instruction clear.
MATLAB ne fait aucune différence entre les nombres réels et complexes : On dispose des mêmes
opérations. Les variables i et j sont les variables complexes telles que i = j= sqrt(-1). Cette double
définition répond aux attentes des mathématiciens et physiciens !
En plus des 2 variables complexes, MATLAB propose plusieurs fonctions spécifiques au calcul
complexe dont voici quelques exemples :
» z=2+3i,Part_Reel_z=real(z),Part_Imag_z=imag(z)
z =
2.0000 + 3.0000i
Part_Reel_z =
2
Part_Imag_z =
3
•Module et phase
» w=2+2j;
» r=abs(w);
» theta=angle(w);
» t=r*exp(j*theta)
t =
2.0000 + 2.0000i
IUT CACHAN / Initiation à MATLAB / S.POUJOULY
•Conjugué
» p=1+3i;
» conj(p)
ans =
1.0000 - 3.0000i
» p'
ans =
1.0000 - 3.0000i
L’élément de base dans MATLAB est une matrice dont les dimensions n’ont pas à être fixés
explicitement. N’importe quelle variable peut être vue comme une matrice : dans le cas d’un vecteur il
s’agit d’une matrice avec 1 seule ligne ou 1 seule colonne et dans le cas d’un scalaire il s’agit d’une
matrice de taille 1×1
La saisie d’un vecteur ou d’une matrice s’opère très facilement en effectuant par exemple :
V = A =
1.0000 0 6.0000 4 1 6
1.4142 3 2 7
4 6 2
ans = ans =
6 7
L’opérateur « : » joue un rôle important dans MATLAB car il est possible d’extraire tout ou partie de
ligne ou colonne d’un vecteur ou une matrice. Exemple :
» A(:,1)
» V(1:3)
ans =
ans =
4
3 1 0 6
4
» A(2,:)
ans =
3 2 7
» size(A)
ans =
3 3
U = Z =
1 1 1 1 0 0 0
0 0 0
• D’effectuer aussi toutes les autres opérations disponibles s’appliquant aussi sur des matrices :
produit, ^ puissance , exp exponentielle, max maximum, min minimun, sum somme
ans = 4 2 2
4 8 18
3x + y + 2 z = 5
⇒ Résoudre le système d’équations suivant : 2 x − 2 y + z = 0
x − 3 y + z = −1
8 1 6
⇒ Etude des propriétés de la matrice de Albrecht Dürer.(Math allemand 1514) M = 3 5 7
4 9 2
MATLAB dispose d’une instruction plot très complète qui permet d’effectuer rapidement toutes
sortes de tracés graphiques.
Exemple : Commentaires
» theta=0:pi/100:2*pi;
» s=sin(theta);
» plot(theta,s)
On obtient alors une nouvelle fenêtre intitulé Figure No 1 (par défaut) avec le tracé suivant :
1
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7
On peut tracer sur la même figure plusieurs courbes avec des options différentes.
Exemple : Commentaires
» theta=0:pi/100:2*pi;
» s1=sin(theta);
» s2=sin(theta-pi/6);
» s3=sin(theta+pi/6);
» plot(theta,s1)
» hold on
» plot(theta,s2,'r')
» plot(theta,s3,'+b')
» hold off
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7
Si l’on souhaite produire plusieurs graphiques sur des fenêtres différentes, il suffit de faire précéder
la commande plot par la commande figure(n) ou n représente le numéro de la figure que l’on veut
créer. Il est aussi possible d’afficher sur une même figure plusieurs graphiques avec des axes différents en
utilisant la commande subplot :
Exemple : Commentaires
» t=-3:0.1:3;
» subplot(2,2,1)
» plot(t)
» subplot(2,2,2)
» plot(t,cosh(t))
» subplot(2,2,3)
» plot(t,sinh(t))
» subplot(2,2,4)
» plot(t,tanh(t))
4 15
2
10
0
5
-2
-4 0
0 50 100 -5 0 5
20 1
10 0.5
0 0
-10 -0.5
-20 -1
-5 0 5 -5 0 5
Afin de compléter votre boite à outils pour les graphiques, MATLAB propose des fonctions utiles
pour une bonne présentation des résultats :
» x=-5:0.1:5;
» plot(x,x.^2+x+1)
» xlabel('-5 < x < +5')
» ylabel('x^2+x+1')
» title('Parabole')
» text(3,5,'x>0')
» text(-4,5,'x<0')
30
25
x^ 20
2+
x+
1 15
10
5 x<0 x>0
0
-5 0 5
-5 < x < +5
On peut zoomer une figure existante en utilisant la commande axis([xmin xmax ymin ymax)]
Exemple
1.4
1.3
1.2
x^21.1
+x
+1 1
0.9
0.8
0.7
0.6
0.5
-1 -0.8 -0.6 -0.4 -0.2 0
-5 < x < +5
semilogx
semilogy
loglog
» mesg='IUT CACHAN';
» disp(mesg)
IUT CACHAN
» mesg1=[mesg ' Geii1'];
» disp(mesg1)
IUT CACHAN Geii1
On peut convertir des nombres en suite de caractères grâce aux fonctions num2str, int2str et
sprintf
» y2k=2000;
» disp([mesg1 ,' ',num2str(y2k)])
IUT CACHAN Geii1 2000
La fonction eval exécute une chaîne de caractère contenant une commande MATLAB . Exemple
» eval(['x','= sqrt(2)'])
x =
1.4142
On retrouve le même principe avec la fonction feval mais pour l’évaluation d’une fonction
» feval('cos',pi)
ans =
-1
L’utilisateur d’un programme peut s’il le souhaite être interroger en utilisant la commande :
rep_fo =
• Il est impératif de travailler dans votre répertoire et non dans celui de matlab ! Après avoir créer
votre propre répertoire sous le format suivant et obligatoire c:\users\formation_année\nom\xao_matlab\.
Lors de l’exécution de MATLAB vous pouvez obtenir le répertoire courant en tapant l’instruction cd , et
utiliser cette même instruction pour se déplacer vers votre répertoire.
L’instructions dir permet de lister le contenu de votre répertoire.
• Vous pouvez sauvegarder l’ensemble ou une partie des variables crées lors de votre session
MATLAB en utilisant la commande
save nom_fichier nom_variables
Si vous voulez sauver l’ensemble des variables, il faut supprimer le champ nom_variables dans
la commande précédente.
Pour charger les variables dans votre espace de travail il suffit d’exécuter l’instruction :
load nom_fichier
IUT CACHAN / Initiation à MATLAB / S.POUJOULY
Il n’est pas besoin de spécifier l’extension du fichier car celui ci est un « .mat » par défaut.
• MATLAB peut exécuter des suites d’instructions ( programme informatique ….) contenu dans des
fichiers de type texte ayant pour extension « .m ». Ce m-file (fichiers MATLAB) peut être édités avec un
simple éditeur de texte comme NOTEPAD sous l’environnement WINDOWS.
Pour exécuter ce script il suffit de se placer dans le répertoire3 ou se trouve le fichier .m ( Donc
FORCEMENT dans votre répertoire ) et de taper le nom du fichier sans son extension dans la fenêtre de
commande MATLAB.
Il est donc fortement conseillé de créer ce genre de fichiers pour les problèmes que vous aurez à
résoudre car cela augmente la rapidité de développement et permet une grande souplesse (pensez aux
corrections à apporter ! !).
Bien entendu des fichiers .m peuvent s’appeler l’un l’autre mais en sachant que les variables sont par
défaut locale4 au script en cours. Pour résoudre ce problème il suffit de changer le script .m en une
fonction MATLAB portant la même extension.
• Pour créer une fonction il suffit d’utiliser le mot clef function comme ceci :
function R=reqv(Ra,Rb)
%***************************************
%* Calcul de la résistance équivalente *
%* d'un circuit de 2 résistances en // *
%* syntaxe R=Reqv(Ra,Rb) *
%***************************************
R=(Ra*Rb)/(Ra+Rb);
Ce fichier doit obligatoirement être enregistrer dans un fichier de même nom que la fonction, c’est à
dire ici : reqv.m
Les lignes qui commencent par un symbole % sont des lignes de commentaires. On peut les placer
n’importe ou dans le fichier, mais dans notre cas, elles ont un rôle bien particulier puisque le texte situé
derrière le symbole % apparaît lorsque l’on tape l’instruction help reqv
• D’une manière générale l’instruction help propose une aide en ligne dans la fenêtre de commande
MATLAB. C’est certainement l’instruction la plus importante de MATLAB
⇒ HELP : A RETENIR ET A SAVOIR UTILISER
En tapant help directement, MATLAB liste l’ensemble des boites à outils ( ToolBox) disponibles et
donc l’ensemble des fonctions que l’on peut utiliser. Il est fortement conseillé de s’attarder sur ce point
car c’est peut être la le plus gros atout de MATLAB.
MATLAB comme tous les langages de programmation propose des instructions de boucle : for et
de contrôle if else que vous allez pouvoir utiliser en utilisant bien entendu la commande help !
3
Pas forcément obligatoire si l’on utilise les possibilités de l’instruction path
4
L’instruction global permet de s’affranchir de ce problème mais peut devenir lourde à gérer et peu lisible
IUT CACHAN / Initiation à MATLAB / S.POUJOULY
III – MATLAB pour « l’électronique »
MATLAB n’est pas dédié à l’électronique mais les calculs et tracés que l’on rencontre en
électronique peuvent être traités par MATLAB d’une manière très efficace ! A travers ce chapitre nous
allons donc découvrir quelques exemples que nous avons souvent l’occasion de traiter, afin d’étoffer
votre connaissance du langage MATLAB :
ans =
2
1
Parmi l’ensemble des fonctions possible pour le calcul des polynôme ( tapez help polyfun pour
lister l’ensemble des fonctions ), il existe une commande permettant d’approcher un ensemble de points
par un polynôme d’ordre n : polyfit
Exemple :
70
60
50
40
30
20
10
0 2 4 6 8 10
Bien que MATLAB puisse calculer le module et la phase d’un nombre complexe et donc celui d’une
fonction de transfert, on dispose d’une fonction bode permettant l’affichage direct d’un diagramme de
Bode complet ( Gain + Phase ) en donnant comme paramètres le numérateur et le dénominateur de la
fonction de transfert. Le numérateur et le dénominateur sont en fait considérés comme 2 polynômes en
« p ».
0
Exemple :
Ga-20
in
» n=[1]; dB
» d=[1 10]; -40
» bode(n,d)
-60 -1 0 1 2
10 10 10 10
Pour obtenir l’affichage suivant : Frequency (rad/sec)
0
Ph
-30
as
e
de -60
g
-90
-1 0 1 2
10 10 10 10
Frequency (rad/sec)
Bien entendu, l’instruction bode possède plusieurs options que nous aurons l’occasion de découvrir
en TP XAO :
» help bode
» help signal
Waveform generation.
diric - Dirichlet (periodic sinc) function.
sawtooth - Sawtooth function.
sinc - Sinc or sin(pi*x)/(pi*x) function
square - Square wave function.
Transforms.
czt - Chirp-z transform.
dct - Discrete cosine transform.
dftmtx - Discrete Fourier transform matrix.
fft - Fast Fourier transform.
fftshift - Swap vector halves.
hilbert - Hilbert transform.
idct - Inverse discrete cosine transform.
ifft - Inverse fast Fourier transform.
Windows.
bartlett - Bartlett window.
blackman - Blackman window.
boxcar - Rectangular window.
chebwin - Chebyshev window.
hamming - Hamming window.
hanning - Hanning window.
kaiser - Kaiser window.
triang - Triangular window.
Parametric modeling.
invfreqs - Analog filter fit to frequency response.
invfreqz - Discrete filter fit to frequency response.
levinson - Levinson-Durbin recursion.
lpc - Linear Predictive Coefficients using autocorrelation method.
prony - Prony's discrete filter fit to time response.
stmcb - Steiglitz-McBride iteration for ARMA modeling.
ident - See also the Identification Toolbox.
Specialized operations.
cceps - Complex cepstrum.
decimate - Resample data at a lower sample rate.
deconv - Deconvolution.
demod - Demodulation for communications simulation.
interp - Resample data at a higher sample rate.
interp1 - General 1-D interpolation. (MATLAB Toolbox)
medfilt1 - 1-Dimensional median filtering.
modulate - Modulation for communications simulation.
rceps - Real cepstrum and minimum pahse reconstruction.
resample - Resample sequence with new sampling rate.
IUT CACHAN / Initiation à MATLAB / S.POUJOULY
specgram - Spectrogram, for speech signals.
spline - Cubic spline interpolation.
vco - Voltage controlled oscillator.
Frequency translation.
lp2bp - Lowpass to bandpass analog filter transformation.
lp2bs - Lowpass to bandstop analog filter transformation.
lp2hp - Lowpass to highpass analog filter transformation.
lp2lp - Lowpass to lowpass analog filter transformation.
Filter discretization.
bilinear - Bilinear transformation with optional prewarping.
impinvar - Impulse invariance analog to digital conversion.
Other
conv2 - 2-D convolution.
cplxpair - Order vector into complex conjugate pairs.
detrend - Linear trend removal.
fft2 - 2-D fast Fourier transform.
fftshift - Swap quadrants of array.
ifft2 - Inverse 2-D fast Fourier transform.
polystab - Polynomial stabilization.
stem - Plot discrete data sequence.
strips - Strip plot.
xcorr2 - 2-D cross-correlation.
Demonstrations.
cztdemo - Chirp-z transform and FFT demonstration.
filtdemo - Filter design demonstration.
moddemo - Modulation/demodulation demonstration.
sosdemo - Second-order sections demonstration.
V – Bibliographie
! Initiation au langage MATLAB – Cours DEA électronique Paris Sud – Guy Demoment
! MATLAB The Language of Technical Computing, The MathWorks Inc
" http://www.mathworks.com
" http://webast.ast.obs-mip.fr/people/carfan/index.html
" http://[email protected] Programmes en langage MATLAB à télécharger
5
LABView est un produit distribué par National Instrument
IUT CACHAN / Initiation à MATLAB / S.POUJOULY