PROGRAMMATION EN MATLAB:
Cycle Ingénieur, 1ère année
Structures de base
Ouvrez Matlab dès maintenant !
Comment écrit on des commentaires dans un script en Matlab
?
1. /* mon commentaire */
2. // mon commentaire
3. % mon commentaire
4. # mon commentaire
QCM
Initiation à Matlab 2
Comment écrit on des commentaires dans un script en Matlab
?
1. /* mon commentaire */ (commentaires en C)
2. // mon commentaire (commentaires en C)
3. % mon commentaire
4. # mon commentaire (commentaires en Python)
QCM
Initiation à Matlab 3
On souhaite créer un vecteur ligne contenant les entiers entre
0 et 5. Choisissez la (les) syntaxe(s) correcte(s) :
1. V = [0 ; 1 ; 2 ; 3 ; 4 ; 5]
2. V = [0 1 2 3 4 5]
3. V = 0:5
4. V = linspace(0,5,6)
5. V = linspace(0,5,5)
QCM
Initiation à Matlab 4
On souhaite créer un vecteur ligne contenant les entiers entre
0 et 5. Choisissez la (les) syntaxe(s) correcte(s) :
1. V = [0 ; 1 ; 2 ; 3 ; 4 ; 5] (crée un vecteur colonne)
2. V = [0 1 2 3 4 5]
3. V = 0:5
4. V = linspace(0,5,6)
5. V = linspace(0,5,5) (les éléments de V ne sont pas entiers)
QCM
Initiation à Matlab 5
On veut évaluer une fonction y = f(x) pour les différentes valeurs de x
contenues dans le vecteur ligne défini par x = linspace(-10,10,1000);
Choisissez la (les) syntaxe(s) correcte(s) :
1. y = 1/(2 + 10*sin(x)^2 )
2. y = 1./(2 + 10*sin(x)^2 )
3. y = 1./(2 + 10*sin(x).^2 )
4. y = 1./(2 + 10.*sin(x).^2 )
5. y = 1./(2 .+ 10.*sin(x).^2 )
QCM
Initiation à Matlab 6
On veut évaluer une fonction y = f(x) pour les différentes valeurs de x
contenues dans le vecteur ligne défini par x = linspace(-10,10,1000);
Choisissez la (les) syntaxe(s) correcte(s) :
1. y = 1/(2 + 10*sin(x)^2 )(opérateurs / et ^ élément par élément incorrects)
2. y = 1./(2 + 10*sin(x)^2 )
3. y = 1./(2 + 10*sin(x).^2 )
4. y = 1./(2 + 10.*sin(x).^2 )
5. y = 1./(2 .+ 10.*sin(x).^2 ) ( « .+ » n’existe pas)
QCM
Initiation à Matlab 7
On veut superposer deux courbes sur un même graphe, l’une sera en
rouge pointillés avec des marqueurs circulaires, l’autre en trait continu
vert. Quelle est la bonne syntaxe ?
1. figure
subplot(1,2,1)
plot(x1,y1,’r-’)
subplot(1,2,2)
plot(x2,y2,’go’)
2. figure
plot(x1,y1,’b--’,x2,y2,’g--’)
3. figure
plot(x1,y1,’ro--’)
hold on
plot(x2,y2,’g-’)
QCM
Initiation à Matlab 8
On veut superposer deux courbes sur un même graphe, l’une sera en
rouge pointillés avec des marqueurs circulaires, l’autre en trait continu
vert. Quelle est la bonne syntaxe ?
1. figure
subplot(1,2,1) (on trace sur 2 panneaux différents…
plot(x1,y1,’r-) une courbe en trait rouge continu…
subplot(1,2,2)
plot(x2,y2,’go) et une courbe avec des marqueurs circulaires verts non reliés)
2. figure
plot(x1,y1,’b--’,x2,y2,’g--’)(courbes pointillées bleue et verte superposées)
3. figure
plot(x1,y1,’ro--’)
hold on
plot(x2,y2,’g-’)
QCM
Initiation à Matlab 9
Lorganisation dun projet en Matlab
Initiation à Matlab
Les commandes dans un Script (ou dans la Command Window) font appel à
des fonctions qui exécutent une tache précise
main.c
int main()
{
Arg = Mafonction(arg1,arg2);
}
source.c (+ source.h associé)
int Mafonction(int arg1, int arg2)
{
}
C
10
Lorganisation dun projet en Matlab
Initiation à Matlab
Les commandes dans un Script (ou dans la Command Window) font appel à
des fonctions qui exécutent une tache précise
main.c
int main()
{
Arg = Mafonction(arg1,arg2);
}
Mon_script.m
...
%Appel à Mafonction()
Arg = Mafonction(arg1,arg2);
...
source.c (+ source.h associé)
int Mafonction(int arg1, int arg2)
{
}
Mafonction.m
function Arg = Mafonction(arg1,arg2)
...
Matlab
C
11
Les fonctions
Initiation à Matlab
function P = Poynting( E , B)
% Poynting: calcule le vecteur de Poynting d'un champ électromagnétique
% USAGE: P=Poynting(E,B)
% E: vecteur complexe de 3 éléments, l'amplitude complexe du vecteur
% champ électrique (Ex,Ey,Ez) en V/m.
% B: vecteur complexe de 3 éléments, l'amplitude complexe du vecteur
% champ magnétique (Bx,By,Bz) en tesla.
% P: vecteur réel de 3 éléments, donnant les composantes (rPx,rPy,rPz)
% de la partie réelle du vecteur de Poynting complexe en W/m².
% Cf. [Jackson, Classical Electrodynamics, 3rd Ed, Wiley 1998]
mu0 = 4*pi*1E-7; %Perméabilité magnétique du vide (H/m)
P = real(cross(E,conj(B)))/(2*mu0);
% ‘cross’ calcule le produit vectoriel (“cross product”)
end
Dans le fichier Poynting.m
12
Les fonctions
Initiation à Matlab
function P = Poynting( E , B)
% Poynting: calcule le vecteur de Poynting d'un champ électromagnétique
% USAGE: P=Poynting(E,B)
% E: vecteur complexe de 3 éléments, l'amplitude complexe du vecteur
% champ électrique (Ex,Ey,Ez) en V/m.
% B: vecteur complexe de 3 éléments, l'amplitude complexe du vecteur
% champ magnétique (Bx,By,Bz) en tesla.
% P: vecteur réel de 3 éléments, donnant les composantes (rPx,rPy,rPz)
% de la partie réelle du vecteur de Poynting complexe en W/m².
% Cf. [Jackson, Classical Electrodynamics, 3rd Ed, Wiley 1998]
mu0 = 4*pi*1E-7; %Perméabilité magnétique du vide (H/m)
P = real(cross(E,conj(B)))/(2*mu0);
% ‘cross’ calcule le produit vectoriel (“cross product”)
end
Dans le fichier Poynting.m
Nom de la fonction
Variable représentant
l’argument de sortie Variables représentant les arguments d’entrée
13
Les fonctions
Initiation à Matlab
function P = Poynting( E , B)
% Poynting: calcule le vecteur de Poynting d'un champ électromagnétique
% USAGE: P=Poynting(E,B)
% E: vecteur complexe de 3 éléments, l'amplitude complexe du vecteur
% champ électrique (Ex,Ey,Ez) en V/m.
% B: vecteur complexe de 3 éléments, l'amplitude complexe du vecteur
% champ magnétique (Bx,By,Bz) en tesla.
% P: vecteur réel de 3 éléments, donnant les composantes (rPx,rPy,rPz)
% de la partie réelle du vecteur de Poynting complexe en W/m².
% Cf. [Jackson, Classical Electrodynamics, 3rd Ed, Wiley 1998]
mu0 = 4*pi*1E-7; %Perméabilité magnétique du vide (H/m)
P = real(cross(E,conj(B)))/(2*mu0);
% ‘cross’ calcule le produit vectoriel (“cross product”)
end
En-tête
En-tête étendu
(commentaires)
Dans le fichier Poynting.m
Nom de la fonction
Variable représentant
l’argument de sortie Variables représentant les arguments d’entrée
14
Les fonctions
Initiation à Matlab
function P = Poynting( E , B)
% Poynting: calcule le vecteur de Poynting d'un champ électromagnétique
% USAGE: P=Poynting(E,B)
% E: vecteur complexe de 3 éléments, l'amplitude complexe du vecteur
% champ électrique (Ex,Ey,Ez) en V/m.
% B: vecteur complexe de 3 éléments, l'amplitude complexe du vecteur
% champ magnétique (Bx,By,Bz) en tesla.
% P: vecteur réel de 3 éléments, donnant les composantes (rPx,rPy,rPz)
% de la partie réelle du vecteur de Poynting complexe en W/m².
% Cf. [Jackson, Classical Electrodynamics, 3rd Ed, Wiley 1998]
mu0 = 4*pi*1E-7; %Perméabilité magnétique du vide (H/m)
P = real(cross(E,conj(B)))/(2*mu0);
% ‘cross’ calcule le produit vectoriel (“cross product”)
end
En-tête
En-tête étendu
(commentaires)
Dans le fichier Poynting.m
Nom de la fonction
Variable représentant
l’argument de sortie Variables représentant les arguments d’entrée
Variable
locale
Affectation du résultat à l’argument de sortie P
Mot clé facultatif
15
Appel à une fonction
Initiation à Matlab
En C, plusieurs arguments de sortie pointeurs en arguments d’entrée (passage
d’arguments par adresse)
Nombre
d’arguments
de sortie
Nombre
d’arguments
d’entrée
Syntaxe
0 ou 1 (ans)0Mafonction() ou Mafonction
0 ou 1 (ans)1Mafonction(x)
1 0 y = Mafonction() ou y = Mafonction
1 1 ou plusieurs y = Mafonction(x1,x2,…)
plusieurs 1 ou plusieurs [y1,y2,…,yN] = Mafonction(x1,x2,…)
Syntaxe à plusieurs arguments de sortie en Matlab du C
16
Initiation à Matlab
A vous de jouer !
1. Complétez la fonction Systeme_optique à partir de son en-tête étendu
2. Faire une fonction qui prend la longueur d’onde et l’ouverture numérique image
en argument d’entrée et renvoie le diamètre de la tache d’Airy. Précisez l’unité
choisie pour lambda dans l’en-tête étendu
3. Modifier Systeme_optique pour y ajouter les arguments d’entrée et de sortie
suivants:
[OAprime,Gy,ON,Phi] = Systeme_optique(OA,fp,D,lambda,Pixel)
La fonction renverra un Warning si la tache d’Airy est plus petite qu’un pixel
Lancez la commande «CopieTravail Systeme_optique.m» puis
ouvrez le fichier Systeme_optique.m du répertoire de travail.
Ouverture numérique image
Diamètre de la tache d’Airy
Diamètre de la lentille Longueur
d’onde
Taille d’un
pixel
17
Initiation à Matlab
Structures conditionnelles
if condition
...
end
if condition1
...
elseif condition2
...
else
...
end
if condition
...
else
...
end
Qu’est ce qu’une condition ? Une affirmation qui peut être vraie ou fausse
Opérateurs
logiques
Quelques fonctions de test
Opérateurs de
comparaison
<,<=,>,>=,==,~= isnan(),isinf(),isempty(),isreal() &&,||,~
Exemple:
x = 4
y = 3
x>2 && y==1
est
égal à
est
différent de isinf(1/0)
v = [];
isemtpy(v)
AND OR NOT
18
Initiation à Matlab
Les boucles for et while
for k = 1:N
...
end
while condition
...
end
while condition
...
if condition2
return
end
end
while condition
...
if condition2
break
end
end
k : variable de boucle
Vecteur ligne
Si N<1, la boucle n’est
pas exécutée
A vous de jouer !
stoppe la boucle
while (ou la boucle
for) la plus interne
stoppe la
fonction
Faites les exercices de la feuille de TD
19
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !