L’organisation d’un 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
L’organisation d’un 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