Académique Documents
Professionnel Documents
Culture Documents
(support électronique)
1
Initiation à MATLAB
I. Logiciel Matlab :
Matlab est un logiciel de calcul scientifique, dont la base est le calcul matriciel
(MATrix LABoratory = MATLAB). C'est un logiciel interactif, où les instructions
peuvent être directement tapées en ligne de commande, ou bien sauvées dans un
fichier (un script).
On peut également utiliser des fonctions (comme en langage C). Le langage est
interprété (pas de compilation des programmes avant exécution), et utilise des
bibliothèques de fonctions très nombreuses, ce qui fait de Matlab un outil puissant
permettant d'écrire des programmes scientifiques beaucoup plus rapidement
qu'avec n'importe quel autre langage traditionnel comme le langage C, C++.
I.1. Répertoire de travail
Le répertoire par défaut est en général c:\matlab\work. Pour conserver vos données,
il faut donc changer de répertoire de travail, pour mettre ses fichiers dans un
répertoire personnel. On suppose qu’il existe un disque dur D. Créons un
répertoire de travail TP_Matlab sur le disque D :
3
Un nom de variable doit respecter les règles suivantes :
commencer par une lettre (a-z ou A-Z)
avoir au plus 63 caractères
ne contenir ni blancs, ni caractères de ponctuation, ni caractères accentués,
ni opérateurs arithmétiques (-, +, ...), ...
Matlab fait la différence entre les majuscules et les minuscules.
Exemple :
» a=15 Affichage: a = 15
» SMP1=2*a Affichage : SMP1 = 30
» SMP2=3*a Affichage : SMP2 = 45
L’affichage par défaut est de 4 chiffres après la virgule, bien que les valeurs
numériques soient en double précision. En double précision, les valeurs sont
stockées sur 8 octets et ont au moins 15 chiffres significatifs, soit une précision de
10-16
. On peut choisir le format d’affichage à l’écran :
» help format
FORMAT Set output format.
All computations in MATLAB are done in double precision.
FORMAT may be used to switch between different output
display formats as follows:
FORMAT Default. Same as SHORT.
FORMAT SHORT Scaled fixed point format with 5 digits.
5
FORMAT LONG Scaled fixed point format with 15 digits.
FORMAT SHORT E Floating point format with 5 digits.
FORMAT LONG E Floating point format with 15 digits.
FORMAT SHORT G Best of fixed or floating point format with 5 digits.
FORMAT LONG G Best of fixed or floating point format with 15 digits.
FORMAT HEX Hexadecimal format.
FORMAT + The symbols +, - and blank are printed
for positive, negative and zero elements.
Imaginary parts are ignored.
FORMAT BANK Fixed format for dollars and cents.
Spacing:
FORMAT COMPACT Suppress extra line-feeds.
FORMAT LOOSE Puts the extra line-feeds back in.
Exemple:
>> f= cos(pi/3)-sqrt(3)/5 Affichage : f= 0.1536
>> format long
>> f= cos(pi/3)-sqrt(3)/5 Affichage : f = 0.15358983848622
>> format short
>> f= cos(pi/3)-sqrt(3)/5 Affichage : f= 0.1536
6
I.5. Manipulation des vecteurs : Opérations de base
» v=[1 3 5 7 11 13 17 19 23 29] il s’agit d’un vecteur ligne
l’écran affiche: v = 1 3 5 7 11 13 17 19 23 29
D'un autre coté, si on définit un nouvel élément de la matrice en de hors de la taille initiale, la
matrice est redimensionnée pour inclure le nouvel élément, les éléments non définis sont
complétés par des zéros :
14
>> A(3,7) = 10 >> A(3,8) = 15
A= 9 1 4 5 0 0 0 A= 9 1 4 5 0 0 0 0
5 6 18 4 0 0 0 5 6 18 4 0 0 0 0
7 2 3 15 0 0 10 7 2 3 15 0 0 0 15
3 7 11 4 0 0 0 3 7 11 4 0 0 0 0
On peux retrouver facilement notre matrice originale en utilisant l’instruction : A(:,1:4)
>> A=A(:,1:4)
A= 9 1 4 5
5 6 18 4
7 2 3 15
3 7 11 4
On peut aussi accéder à plusieurs éléments non adjacents
>> A([1 3],[2 4]) Ligne 1 et 3 puis colonnes 2 et 4 : Résultats ans = 1 5
2 15
IV.3 Concaténation : Ajouter des blocs de matrices
>> X=[A A] >> X=[A A A]
X = X=
9 1 4 5 9 1 4 5 9 1 4 5 9 1 4 5 9 1 4 5
5 6 18 4 5 6 18 4 5 6 18 4 5 6 18 4 5 6 18 4
7 2 3 15 7 2 3 15 7 2 3 15 7 2 3 15 7 2 3 15
3 7 11 4 3 7 11 4 3 7 11 4 3 7 11 4 3 7 11 4
15
>> X = [A; A] >> X = [A; A;A] X =
X= 9 1 4 5
9 1 4 5 5 6 18 4
5 6 18 4 7 2 3 15
7 2 3 15 3 7 11 4
3 7 11 4 9 1 4 5
9 1 4 5 5 6 18 4
5 6 18 4 7 2 3 15
7 2 3 15 3 7 11 4
3 7 11 4 9 1 4 5
5 6 18 4
7 2 3 15
3 7 11 4
IV.4. Transposition : les lignes devinent des colonnes
La transposition d’une matrice est obtenue à l'aide du caractère de ponctuation '
>> C=A' C=
9 5 7 3
1 6 2 7
4 18 3 11
5 4 15 4
IV.5. Fonction de sommation sum
La fonction sum calcule la somme colonne par colonne, mais dans le cas où la matrice se réduit
à un vecteur ligne, elle calcule la somme de tous les éléments du vecteur :
>> X=sum(A) X = 24 16 36 28 ; >> Y = sum(X) Y =104
Pour transformer un vecteur ligne en vecteur colonne et vice versa, il suffit de transposer :
>> Z=X' Z = 24; 16; 36; 28 16
Pour calculer la somme lignes par lignes, il suffit de transposer avant d'utiliser la fonction sum :
>> C=A' C =
9 5 7 3
1 6 2 7
4 18 3 11
5 4 15 4
>> XX=sum(A’) XX = 19 33 27 25
IV.5.1. Fonction Diag
Cette fonction retourne une colonne contenant la diagonale d'une matrice
A=
9 1 4 5
5 6 18 4
7 2 3 15
3 7 11 4
>> Vp=diag(A) Vp = 9
6
3
4
>> H=diag(A)' H=9 6 3 4
La fonction MATLAB triu avec comme argument la matrice originale seule, génère une nouvelle
matrice qui a la même diagonale principale que A et les même valeurs situées au dessus de
cette diagonale, avec des 0 partout ailleurs. La fonction triu(A,k) est une matrice qui a la même
taille et les mêmes éléments que A qui sont situés sur et au dessus de la kième diagonale;
on complète la nouvelle matrice obtenue avec des 0.
17
>> A4=triu(A) A4 = >> A5=triu(A,-1) A5 =
9 1 4 5 9 1 4 5
0 6 18 4 5 6 18 4
0 0 3 15 0 2 3 15
0 0 0 4 0 0 11 4
>> A6=triu(A,-2) A6 =
9 1 4 5 >> B1=tril(A) B1 =
5 6 18 4 9 0 0 0
7 2 3 15 5 6 0 0
0 7 11 4 7 2 3 0
>> A7=triu(A,-3) A7 = 3 7 11 4
9 1 4 5 >> B2=tril(A,+1) B2 =
5 6 18 4 9 1 0 0
7 2 3 15 5 6 18 0
3 7 11 4 7 2 3 15
3 7 11 4
>> B3=tril(A,+2) B3 = >> B4=tril(A,-1) B4=
9 1 4 0 0 0 0 0
5 6 18 4 5 0 0 0
7 2 3 15 7 2 0 0
3 7 11 4 3 7 11 0
Exemple:
subplot(2,2,1) 1 2 subplot(2,2,2)
subplot(2,2,3) 3 4 subplot(2,2,4)
Pour revenir à la 1ère fenêtre, effacer la fenêtre, puis fermer toutes les fenêtres :
» figure(1)
» clf
» close all
VI.1. Affichage de plusieurs graphiques sur une même fenêtre, gestion des fenêtres
On peut afficher plusieurs courbes sur un même graphique en utilisant hold on et hold off, ou
plusieurs graphiques sur une même fenêtre en utilisant la fonction subplot, ou encore passer
d'une fenêtre à une autre avec figure.
Exemple : sur l’intervalle et
23
% SMP_TP1.m
%Tracé de la fonction sin(2*pi*w1*t) sur l’intervalle et
figure(1)
%définir l'intervalle et le pas 1
t=-1.5:0.01:1.5; f1
% calcul de la fréquence 0.5 f2
w1=1/3;
f1,f2
% calcul de la fonction f1, f2 et f3 0
f1=sin(2*pi*w1*t);
-0.5
f2=cos(2*pi*w1*t);
f3= tan(2*pi*w1*t); -1
subplot(2,1,1) -1.5 -1 -0.5 0 0.5 1 1.5
plot(t,f1,'k') t
16
xlabel('t') x 10
2
ylabel('f1,f2')
grid; 1
hold on
plot(t,f2,'m') 0
f3
subplot(2,1,2)
plot(t,f3,'r') -1
xlabel('t')
ylabel('f3') -2
-1.5 -1 -0.5 0 0.5 1 1.5
grid;
t
Avec la commande hold, on maintient le stylo graphique sur la fenêtre, alors que hold off
le relève. La commande hold seule fait passer d'un état à l'autre. Pour afficher plusieurs
graphiques dans une même fenêtre, on utilise subplot de la façon suivante : 24
Exemple
t=-10:0.1:10; w1=3/2; x=(1+cos(2*pi*w1*t))/2; y=exp(-abs(t/3)) ;
subplot(2,2,1) ; plot(t,x,’r’) ; grid ; xlabel('t en secondes') ; ylabel('x') ;
title(['x(t)=(1+cos(2\pi w1 t))/2, w1 = ',num2str(w1),' rad/s'])
subplot(2,2,2) ; plot(t,y,’b’) ; grid ; xlabel('t en secondes'); ylabel('y'); title('y(t) = exp(t/3)');
subplot(2,2,3) ; plot(t,x.*y,’k’) ; grid ; title('p(t)=x(t)y(t)') ; xlabel('t en secondes'); ylabel('p(t)')
subplot(2,2,4) ; plot(t,x./y,’g’) ; grid ; title('d(t)=x(t)/y(t)') ; xlabel('t en secondes'); ylabel('d(t)')
x(t)=(1+cos(2 w1 t))/2, w1 = 0.5 rad/s y(t) = exp(t/3)
1 1
0.5 0.5
x
y
0 0
-10 -5 0 5 10 -10 -5 0 5 10
t en secondes t en secondes
p(t)=x(t)y(t) d(t)=x(t)/y(t)
1 30
20
p(t)
d(t)
0.5
10
0 0
-10 -5 0 5 10 -10 -5 0 5 10 25
t en secondes t en secondes
x(t)=(1+cos(2 w1 t))/2, w1 = 1.5 rad/s y(t) = exp(t/3)
1 1
0.5 0.5
x
y
0 0
-10 -5 0 5 10 -10 -5 0 5 10
t en secondes t en secondes
p(t)=x(t)y(t) d(t)=x(t)/y(t)
1 30
20
p(t)
d(t)
0.5
10
0 0
-10 -5 0 5 10 -10 -5 0 5 10
t en secondes t en secondes
Les 4 figures de la fenêtre peuvent être vues comme les 4 éléments d'une matrice 2x2,
numérotés de 1 à 4 en suivant les lignes de gauche à droite.
26
VI.1. Images et surfaces
VI.1.1. Affichage d’images
En Matlab, toute matrice peut être considérée comme une image que l'on peut afficher
avec image ou imagesc. La commande imagesc ajuste les valeurs d’une matrice pour
que toute la palette des couleurs courante soit utilisée et affiche celle-ci en tant qu’image.
%SMP_TP4.m
Z1=rand(2) Z2=rand(4)
figure (1) figure (2)
subplot(2,1,1) subplot(1,2,1)
image(Z1) % Affiche une image image(Z) % Affiche une image
subplot(2,1,2) subplot(1,2,2)
imagesc(Z1) % Met à pleine échelle et affiche imagesc(Z) % Met à pleine échelle et affiche
0.5 0.5
0.5
1.5
1 1
2
2.5
0.5 1 1.5 2 2.5
1.5 1.5
0.5
2 2
1.5
2.5
0.5 1 1.5 2 2.5 2.5
0.5 1 1.5 2 2.5
2.5
0.5 1 1.5 2
27
2.5
VI.1.2. Affichage graphique en 3D (surfaces)
Pour afficher des surfaces dans une fenêtre graphique, voir les fonctions de help graph3d.
On ne présente ici que les fonctions les plus courantes.
On veut représenter sous forme d'une surface les valeurs prises par une fonction de deux
variables x et y. Par exemple, on veut évaluer la fonction z(x,y), en fonction des deux variables
x et y, cette fonction étant définie par z(x,y)= xy. On veut calculer des valeurs de z pour et .
En choisissant une grille de points espacés de 1, on devra évaluer z pour tous les couples de
coordonnées possibles .
La fonction meshgrid permet d'obtenir ces points :
0 0
Z=X.^2+Y.^2 20 20
10 20 10 20
subplot(2,2,1) 0 0
10
0 0
10
subplot(2,2,2)
surf(X,Y,Z) 20
subplot(2,2,3)
15
contour(X,Y,Z)
10
0
0 5 10 15 20
28
Exemple : Evaluer cette fonction sur une grille de points espacés de 0.1 avec x [0,20]
et x [-1,20] .
%Master_TP6.m
x=-1:0.1:2;
y=-1:0.1:2; 1
%fréquence en Hz
f=1.0
%pulsation 0
w=2*pi*f
[X,Y] = meshgrid(x,y); -1
Z=cos(w*X/2).*sin(w*Y/2); 2
1 2
subplot(2,1,1) 0 1
0
mesh(X,Y,Z); -1 -1
subplot(2,1,2)
surf(X,Y,Z);
Pour avoir une surface pleine, en utilise la fonction surf(X,Y,Z)
subplot(3,1,3)
contour(X,Y,Z); 1
-1
2
1 2
0 1
0
-1 -1
29
La fonction contour permet d'afficher les lignes de niveau : contour(X,Y,Z)
1
0
-1
2 2
1 1
0 0
-1 -1
1
0
-1
2 2
1 1
0 0
-1 -1
2
-1
-1 -0.5 0 0.5 1 1.5 2
30
VI.1.3. Histogramme
%défini l’intervalle et les largeurs des canaux de l’histogramme
x=-2.9 : 0.2 : 2.9;
% génère des nombres aléatoires répartis selon une distribution normale
y=randn(50000,1);
% dessine l’histogramme MatLab1_fig3 VI.1.4. Grillage en perspective: mesh:
hist(y,x) Graphe3D.m
4000
x = linspace(-3, 3, 30); y = linspace(-3, 3, 30);
[X Y] = meshgrid(x,y);
3500 % peaks est une fonction à 2D définie dans matlab
3000
Z = peaks(X, Y); % grillage 3D; mesh(X, Y, Z)
% grillage 3D avec les contours sur le plan de base
2500 meshc(X, Y, Z)
2000
10
1500
5
1000
500 0
0 -5
-3 -2 -1 0 1 2 3
-10
4
2 4
0 2
0
-2 -2 31
-4 -4
VI.1.5. Surface avec illumination
clf
[X,Y,Z] = peaks(30); 10
shading interp -5
%choix d’une palette de couleurs prédéfinie
colormap pink -10
-4
view(-37.5+90, 30) -2 4
2
% changement point de vue: view(azimut, elevation) 0
0
2 -2
4 -4
VI.1.6. Contour
La commande contour permet de tracer les lignes de niveau d’une fonction de deux
variables réelles. Cette fonction peut être définie par une expression matlab.
z ( x 1) 2 10( x 2 y ) 2 3
3
Z = (X-1).^2 + 10*(X.^2-Y).^2; 1 1
[C,h] = contour(X,Y,Z,40);
clabel(C,h,'manual') 0 0
-1 -1
-2 -2
-3 -3
-3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3
32
contour(X,Y,Z,10) contour(X,Y,Z,40)
VI.1.7.Interpolation
Une interpolation consiste à relier des points expérimentaux par une courbe formée de segment
de droites ou de courbes polynomiales. Ceci est réalisé par la fonction interp1. la commande
interp1(x,y,z) retourne un vecteur de mêmes dimensions que z dont les valeurs correspondent
aux images des éléments de z déterminés par interpolation sur x et y.
f=interp1(x,y,z,’type’)
La chaine ‘type’ spécifie un type d’interpolation parmi les suivants :
‘linear’ : interpolation linaire.
‘spline’ : interpolation par splines cubiques
‘cubic’ : interpolation cubique
SMP_TP7.m %interpolation par splines cubiques
%y=cos(x);On peux tester par la fonction cos(x) figure(2)
%y=tan(x);On peux tester par la fonction tan(x) f=interp1(x,y,z,'spline');
y=x.^2;% On peux tester par une fonction polynôme plot(x,y,'-',z,f);
xlabel('x')
%pas du vecteur z inférieur à celui de x. ylabel('x^2')
z=-pi:pi/10:pi grid;
%interpolation lineaire title('interpolation pas splines cubiques');
figure(1)
f=interp1(x,y,z); %interpolation par cubiques
%tracé des valeurs réelles et de la courbe d'interpolation figure(3)
plot(x,y,'o',z,f); f=interp1(x,y,z,'cubic');
xlabel('x') plot(x,y,'--',z,f);
ylabel('x^2') xlabel('x')
grid; ylabel('x^2')
title('interpolation lineaire'); grid;
title('interpolation pas cubiques'); 33
interpolation lineaire interpolation pas splines cubiques
10 10
9 9
8 8
7 7
6 6
x2
5
x2
4 4
3 3
2 2
1 1
0 0
-4 -3 -2 -1 0 1 2 3 4 -4 -3 -2 -1 0 1 2 3 4
x interpolation pas cubiques x
10
5
x2
0 34
-4 -3 -2 -1 0 1 2 3 4
x
VII. Systèmes linéaires
Tout système linéaire peut être représenté sous forme matricielle. La résolution d'un tel système
fait appel à la notion d'inverse d'une matrice.
Exemple : 4 x 5 y 8 z 12
Considérons le système d'équations suivant:
x 2 y 3z 8
2 x y z 2
Ce système peut être écrit sous une forme matricielle: AX = B, avec:
4 5 8 12 x
A 1 2 3 B 8 X y
2 1 1 2 z
Résoudre ce système d'équations, il faut trouver X tel que AX = B.
MATLAB permet de résoudre ce problème en écrivant les instructions suivantes:
A = [4 5 -8;-1 2 3;2 1 -1]; B = [12 ;8 ;-2];
X = inv(A)*B
On obtient comme résultat:
X=
-3.2444
3.6444
-0.8444
Remarque :
On peut aussi utiliser la commande MATLAB X = A\B pour retrouver les mêmes
valeurs propres de X.
35
Exercice :
Résoudre les systèmes d'équations ci-dessous en utilisant la commande X=inv(A)*B Et X=A\B
4 x 5 y 8 z w 2t 12
x 2 y 3 z 3w 5t 8
4 x 5 y 8 z w 12
4 x 5 y 12
x 5 y 2 z w 8 2 x y z 6w t 2
x 2 y 8 2 x y z 2 w 0 x 2 y z w t 3
3 x y 2 z w 2t 1
Un aperçu de quelques fonctions MATLAB
[] Énumération d’éléments
: Descripteur d’éléments de vecteur/matrice
() Ensemble d’arguments
, Séparateur d’arguments
; Séparateur des lignes dans les matrices supression du résultat de l’évaluation
d’une instruction
’ Transposition de matrice
. Force l’opérateur à s’appliquer sur chaque élément du vecteur/matrice
% Délimitateur de commentaire
... Continuation de l’instruction sur la ligne suivante
36
Fonctions signification
plot Représentation graphique plane
loglog Représentation plane logarithmique
semilogx somilogy Représentation plane en semilog
6
40
4
30
i*sin(i*t),c(i)
0 20
t
-2 10
-4
0
1
-6 0.5 1
0
-8 0
0 0.5 1 1.5 2 2.5 3 3.5 -0.5
t cos(t) -1 -1
sin(t)
38
2
Ex3: Fonction de deux harmoniques
1.5
n=300;
sin(2*pi*f1*t)+sin(2*pi*f2*t)
f1=1000; 1
f2=1500;
0.5
fe=15000;
te=1/fe; 0
t=0:te:(n-1)*te;
y=sin(2*pi*f1*t)+sin(2*pi*f2*t); -0.5
close all;
-1
plage=1:91;
plot(t(plage),y(plage)); -1.5
xlabel('plage du temps (ms)');
ylabel('sin(2*pi*f1*t)+sin(2*pi*f2*t)'); -2
0 1 2 3 4 5 6
s=abs(fft(y))/(n/2); plage du temps (ms) -3
x 10
fmax=4000; 1.4
df=fe/(n-1);
f=0:df:fmax; 1.2
m=length(f);
Transformée de Fourier
s=s(1:m); 1
figure;
plot(f,s); 0.8
xlabel('fréquence (KHz)');
ylabel('Transformée de Fourier'); 0.6
grid;
0.4
0.2
0 39
0 500 1000 1500 2000 2500 3000 3500 4000
fréquence (KHz)
Ex 4: Comparaison entre fenêtre carrée et fenêtre de Hanning
clear
7
fo=470;
fe=4000;
te=1/fe; 6
N=512;
t=0:te:(N-1)*te; 5
x=7*sin(2*pi*fo*t);
Amplitude
y=2*abs(fft(x)/N); 4
df=fe/N;
f=0:df:800;
3
y=y(1:length(f));
x=x.*hanning(N)';
z=3.98*abs(fft(x)/N); 2
z=z(1:length(f));
close all; 1
plot(f,y,f,z,'r');
xlabel('Fréquence (KHz'); 0
ylabel('Amplitude'); 0 100 200 300 400 500 600 700 800
grid; Fréquence (KHz
40
Ex5: Sinus cardinal en 3D
t = 0:0.1:10; % axe des x Ex6: Signal modulé en amplitude
t0 = 0:2:6; fp=1000;
[tt, tt0] = meshgrid(t,t0); fm=100;
dt = tt - tt0 + eps; im=0.5;
% le eps est ajouté juste pour y = am(fp,fm,im);
%éviter la division par 0 S='signal modulé en amplitude '
z = sin(pi*dt) ./ (dt); S = [S 'fp=' num2str(fp) ' fm=' num2str(fm) ‘…
close all, im =' num2str(im)];
plot3(tt, t, abs(z)); plot(y);
axis('ij'); title(S);
grid;
xlabel('t'); signal modulé en amplitude fp=1000 fm=100 im =0.5
1.5
ylabel('to');
zlabel('sinc(t-t0)');
1
4
0.5
3
sinc(t-t0)
0
2
1 -0.5
0 -1
0
10
8
5 6 -1.5
4 0 50 100 150 200 250 300
2 41
to 10 0
t
mesh(x, y, z)
z
mesh(x, y, z); 1
figure; 0
meshc(x, y, z);
-1
figure; 5
5
meshz(x, y, z);
0
0
-5 -5
y x
meshc(x, y, z)
meshz(x, y, z)
4
4
3
3
2
2
z
1
z
1
0
0
-1
5 -1
5 5
0 5
0
0
-5 0
y -5 42
x -5 -5
y x
Ex7: Fonction meshgrid 4
z
close all; 1
surf(x, y, z); 0
xlabel('x');
ylabel('y'); -1
5
zlabel('z'); 5
figure; 0
0
surf(x, y, z,'FaceColor','interp','FaceLighting','phong','EdgeColor','none');
-5 -5
daspect([5 5 5]) y x
axis tight
view(-50,30)
camlight left
xlabel('x');
ylabel('y');
zlabel('z');
3
2
z
1
0
5
5
0
0
-5 -5 x 43
y
Ex8 Exemple d’une fonction de hannin 0.5
fo =400Hz fe =1600 Hz N =12 L =12
clear; 0.45
%fe/fo=4 0.4
0.35
fo=400;fe=1600; te=1/fe;
0.3
% on trace d'abord W(f) en pointillé avec une bonne résolution 0.25
N=240;L=12;df=fe/N;t=0:te:(L-1)*te; 0.2
x=sin(2*pi*fo*t); 0.15
y1=abs(fft(x,N)/L); 0.1
f1=0:df:(N-1)*df; 0.05
close all; 0
0 200 400 600 800 1000 1200 1400 1600
0.45 0.45
0.4 0.4
0.4
0.35 0.35
0.3 0.3
0.3
0.25 0.25
0.2 0.2
0.2
0.15 0.15
0.1 0.1
0.1
0.05 0.05
0 0 0
0 200 400 600 800 1000 1200 1400 1600 0 200 400 600 800 1000 1200 1400 1600 0 200 400 600 800 1000 1200 1400 1600
44
Ex9 fonctions avec subplot
t=-2:0.1:2; w1=0.5; x=(log(2*pi*w1*t))/2;
figure(2)
subplot(2,2,1) ;
plot(t,x,'r') ; grid; xlabel('t en secondes'); ylabel('x') ;
title(['x(t)=(1+cos(2\pi w1 t))/2, w1 = ',num2str(w1),' rad/s'])
%=================================
y=exp(-abs(t.^2/3)) ; x(t)=(1+cos(2 w1 t))/2, w1 = 0.5 rad/s y(t) = exp(t2/3)
subplot(2,2,2) ; 1 1
plot(t,y,'b') ; grid; xlabel('t en secondes') ;
ylabel('y') ; title('y(t) = exp(t^2/3)')
0 0.5
x
y
%=======================
p=x.*y;
subplot(2,2,3) ;
plot(t,p,'k') ; grid; 0
-1
title('p(t)=x(t)y(t)') -2 0 2 -2 0 2
xlabel('t en secondes') t en secondes t en secondes
ylabel('p(t)') p(t)=x(t)y(t) d(t)=x(t)/y(t)
%==================== 0.5 4
subplot(2,2,4)
d=x./y; plot(t,d,'g')
grid ; title('d(t)=x(t)/y(t)') 0 2
d(t)
p(t)
xlabel('t en secondes')
ylabel('d(t)') -0.5 0
-1 -2
-2 0 2 -2 0 2
t en secondes t en secondes
45
Ex10 fonctions avec subplot
% affichage des quatre figures dans une seule fenêtres
%définir la base du temps avec un pas de 0.1 par exemple
t=-5:0.1:5;
% définir la fréquence
w1=0.5;
% fonction x(t)=(1+cos(2*pi*w1*t))/2
x=(1+cos(2*pi*w1*t))/2; x(t)=(1+cos(2 w1 t))/2, w1 = 0.5 rad/s y(t) = exp(t/3)
% fonction y(t)=exp(-abs(t/3)) 1 1
y=exp(-abs(t/3)) ; %figure(2)
subplot(2,2,1)
plot(t,x) ; grid ; xlabel('t en secondes'); 0.5 0.5
y
ylabel('x')
title(['x(t)=(1+cos(2\pi w1 t))/2, …
w1 = ',num2str(w1),' rad/s'])
subplot(2,2,2) 0 0
-5 0 5 -5 0 5
plot(t,y) ; grid ;
t en secondes t en secondes
xlabel('t en secondes')
ylabel('y') p(t)=x(t)y(t) d(t)=x(t)/y(t)
1 4
title('y(t) = exp(t/3)')
subplot(2,2,3) 3
% tracé de la fonction p(t)=x(t)*y(t)
p(t)
d(t)
plot(t,x.*y) 0.5 2
grid
title('p(t)=x(t)y(t)') ; xlabel('t en secondes') ; 1
ylabel('p(t)') ;
0 0
subplot(2,2,4) -5 0 5 -5 0 5
% tracé de la fonction d(t)=x(t)./y(t) t en secondes t en secondes
plot(t,x./y) ; grid ; title('d(t)=x(t)/y(t)')
xlabel('t en secondes') ; ylabel('d(t)') 46
Ex11 allure d'un polynôme tra c é p o ly n ô m e d e K (x )
6
x=0:0.001:4;
r=[1 2 3];
4
K=poly(r);
y=polyval(K,x); 2
z=polyval(K,x);
plot(x,y)
K(x)
0
xlabel('x')
ylabel('K(x)') -2
title('tracé polynôme de K(x)')
grid -4
figure
mesh(x,y,z) -6
0 0 .5 1 1 .5 2 2 .5 3 3 .5 4
x
47
Problème à résoudre:
48
49
50
figure(3)
clc; clear all; plot(r1, 45*Er1/5e11,'r')
r0=0.53e-10; hold on;
e1=1.6e-19; plot(r2, 45*Er2/5e11,'b')
K=9e9; hold on;
r1=0:0.0001*r0:r0; plot(r1, Vr1,'r')
r2=r0:0.0001*r0:3*r0; hold on;
Er1=(e1*K/r0^3).*r1; plot(r2, Vr2,'b')
Er2=e1*K./r2.^2; xlabel(' Rayon')
Vr1=(e1*K*0.5)*(3-r1.^2/r0^2)./r0; ylabel(' Er(r) et Vr(r)')
Vr2=e1*K./r2;
figure (1)
plot(r1, Er1,'r')
hold on;
plot(r2, Er2,'b')
xlabel(' Rayon')
ylabel(' Champ électrique Er(r)')
figure (2)
plot(r1, Vr1,'r')
hold on;
plot(r2, Vr2,'b')
xlabel(' Rayon')
ylabel(' Potentiel électrique Vr(r)')
51
2.5
4000 2
250
1.5
2000 200
1
150 y(t)
0
0.5
100
-2000
0 y'(t)
50
-4000 -0.5
10 0
5 10 10 -1
0 5 5 10
0 5 -1.5
-5 0
-5 0
-10 -10 -5 -5 -2
-10 -10 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
52
clc;clear all;
plot(t(1:length(t)-1), dy_dt,'r')
x=-10:0.001:10;
gtext('y(t)') % legende de la courbe
y=-10:0.001:10;
y(t)
z1=x.^2.*y+3*x.*y.^2;
gtext('y''(t)') % legende de la courbe
z2=(x.^2.+y.^2).*exp(-0.5.*cos(x+y));
y'(t)
figure(1)
figure (4)
stem3(x,y,z1)
% Polynôme représentant la fonction
figure(2)
polynômiale y(t)
stem3(x,y,z2)
p=[1/4 0 -1 1 0]
%===============================
% Evaluation des valeurs de y(t)
figure (3)
t=-1:0.01:1;
t=-1:0.01:1;
% Evaluation du polynôme p sur
y=(1/4)*t.^4-t.^2+t; % fonction à dériver
l'ensemble p sur l'ensemble t
plot(t,y,'b‘)
y=polyval(p,t);
dt=diff(t); % incréments dt de la variable % calcul de la dérivée
t p_derivee=polyder(p);
dy=diff(y); % incréments dy de la % Evaluation de la dérivée sur
fonction y(t) l'ensemble de t
dy_dt=dy./dt; % dérivée de la fonction dy=polyval(p_derivee,t);
y(t) % tracé de la fonction y(t)
hold on; plot(t,y,'b');
% la fonction dérivée y'(t) possede un % tracé de la fonction dy(t)
élément de moins que y(t) hold on; plot(t,dy,'r'); 53