MATLAB - Fonctions
Une fonction est un groupe d'instructions qui exécutent ensemble une tâche. Dans MATLAB, les fonctions sont définies dans des fichiers séparés. Le nom du fichier et de la fonction doivent être identiques.
Les fonctions opèrent sur des variables dans leur propre espace de travail, également appelé espace de travail local , distinct de l'espace de travail auquel vous accédez à l'invite de commande MATLAB, appelé espace de travail de base .
Les fonctions peuvent accepter plusieurs arguments d'entrée et peuvent renvoyer plusieurs arguments de sortie.
La syntaxe d'une instruction de fonction est −
function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)
Exemple
La fonction suivante nommée mymax doit être écrit dans un fichier nommé mymax.m . Il prend cinq nombres comme argument et renvoie le maximum des nombres.
Créez un fichier de fonction, nommé mymax.m et tapez-y le code suivant −
function max = mymax(n1, n2, n3, n4, n5) %This function calculates the maximum of the % five numbers given as input max = n1; if(n2 > max) max = n2; end if(n3 > max) max = n3; end if(n4 > max) max = n4; end if(n5 > max) max = n5; end
La première ligne d'une fonction commence par le mot-clé fonction . Il donne le nom de la fonction et l'ordre des arguments. Dans notre exemple, le mymax fonction a cinq arguments d'entrée et un argument de sortie.
Les lignes de commentaire qui viennent juste après l'instruction de la fonction fournissent le texte d'aide. Ces lignes sont imprimées lorsque vous tapez −
help mymax
MATLAB exécutera l'instruction ci-dessus et renverra le résultat suivant −
This function calculates the maximum of the five numbers given as input
Vous pouvez appeler la fonction comme −
mymax(34, 78, 89, 23, 11)
MATLAB exécutera l'instruction ci-dessus et renverra le résultat suivant −
ans = 89
Fonctions anonymes
Une fonction anonyme est comme une fonction en ligne dans les langages de programmation traditionnels, définie dans une seule instruction MATLAB. Il se compose d'une seule expression MATLAB et d'un nombre quelconque d'arguments d'entrée et de sortie.
Vous pouvez définir une fonction anonyme directement sur la ligne de commande MATLAB ou dans une fonction ou un script.
De cette façon, vous pouvez créer des fonctions simples sans avoir à créer un fichier pour elles.
La syntaxe pour créer une fonction anonyme à partir d'une expression est
f = @(arglist)expression
Exemple
Dans cet exemple, nous allons écrire une fonction anonyme nommée power, qui prendra deux nombres en entrée et renverra le premier nombre élevé à la puissance du second nombre.
Créez un fichier de script et tapez-y le code suivant −
Démo en directpower = @(x, n) x.^n; result1 = power(7, 3) result2 = power(49, 0.5) result3 = power(10, -10) result4 = power (4.5, 1.5)
Lorsque vous exécutez le fichier, il affiche −
result1 = 343 result2 = 7 result3 = 1.0000e-10 result4 = 9.5459
Fonctions principales et sous-fonctions
Toute fonction autre qu'une fonction anonyme doit être définie dans un fichier. Chaque fichier de fonction contient une fonction principale requise qui apparaît en premier et un certain nombre de sous-fonctions facultatives qui viennent après la fonction principale et sont utilisées par celle-ci.
Les fonctions principales peuvent être appelées depuis l'extérieur du fichier qui les définit, soit depuis la ligne de commande, soit depuis d'autres fonctions, mais les sous-fonctions ne peuvent pas être appelées depuis la ligne de commande ou d'autres fonctions, en dehors du fichier de fonction.
Les sous-fonctions ne sont visibles que pour la fonction principale et les autres sous-fonctions du fichier de fonction qui les définit.
Exemple
Écrivons une fonction nommée quadratique qui calculerait les racines d'une équation quadratique. La fonction prendrait trois entrées, le coefficient quadratique, le coefficient linéaire et le terme constant. Cela renverrait les racines.
Le fichier de fonction quadratic.m contiendra la fonction primaire quadratic et la sous-fonction disque , qui calcule le discriminant.
Créer un fichier de fonction quadratic.m et tapez-y le code suivant −
function [x1,x2] = quadratic(a,b,c) %this function returns the roots of % a quadratic equation. % It takes 3 input arguments % which are the co-efficients of x2, x and the %constant term % It returns the roots d = disc(a,b,c); x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end % end of quadratic function dis = disc(a,b,c) %function calculates the discriminant dis = sqrt(b^2 - 4*a*c); end % end of sub-function
Vous pouvez appeler la fonction ci-dessus à partir de l'invite de commande en tant que −
quadratic(2,4,-4)
MATLAB exécutera l'instruction ci-dessus et renverra le résultat suivant −
ans = 0.7321
Fonctions imbriquées
Vous pouvez définir des fonctions dans le corps d'une autre fonction. Celles-ci sont appelées fonctions imbriquées. Une fonction imbriquée contient tout ou partie des composants de toute autre fonction.
Les fonctions imbriquées sont définies dans le cadre d'une autre fonction et elles partagent l'accès à l'espace de travail de la fonction contenante.
Une fonction imbriquée suit la syntaxe suivante −
function x = A(p1, p2) ... B(p2) function y = B(p3) ... end ... end
Exemple
Réécrivons la fonction quadratique , de l'exemple précédent, cependant, cette fois la fonction de disque sera une fonction imbriquée.
Créer un fichier de fonction quadratic2.m et tapez-y le code suivant −
function [x1,x2] = quadratic2(a,b,c) function disc % nested function d = sqrt(b^2 - 4*a*c); end % end of function disc disc; x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end % end of function quadratic2
Vous pouvez appeler la fonction ci-dessus à partir de l'invite de commande en tant que −
quadratic2(2,4,-4)
MATLAB exécutera l'instruction ci-dessus et renverra le résultat suivant −
ans = 0.73205
Fonctions privées
Une fonction privée est une fonction principale qui n'est visible que par un groupe limité d'autres fonctions. Si vous ne souhaitez pas exposer l'implémentation d'une ou plusieurs fonctions, vous pouvez les créer en tant que fonctions privées.
Les fonctions privées résident dans des sous-dossiers avec le nom spécial privé .
Ils ne sont visibles que pour les fonctions du dossier parent.
Exemple
Réécrivons le quadratique fonction. Cette fois, cependant, le disque fonction calculant le discriminant, sera une fonction privée.
Créez un sous-dossier nommé private dans le répertoire de travail. Enregistrez le fichier de fonction suivant disc.m dedans −
function dis = disc(a,b,c) %function calculates the discriminant dis = sqrt(b^2 - 4*a*c); end % end of sub-function
Créez une fonction quadratic3.m dans votre répertoire de travail et tapez-y le code suivant −
function [x1,x2] = quadratic3(a,b,c) %this function returns the roots of % a quadratic equation. % It takes 3 input arguments % which are the co-efficient of x2, x and the %constant term % It returns the roots d = disc(a,b,c); x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end % end of quadratic3
Vous pouvez appeler la fonction ci-dessus à partir de l'invite de commande en tant que −
quadratic3(2,4,-4)
MATLAB exécutera l'instruction ci-dessus et renverra le résultat suivant −
ans = 0.73205
Variables globales
Les variables globales peuvent être partagées par plusieurs fonctions. Pour cela, vous devez déclarer la variable comme globale dans toutes les fonctions.
Si vous souhaitez accéder à cette variable à partir de l'espace de travail de base, déclarez la variable sur la ligne de commande.
La déclaration globale doit avoir lieu avant que la variable ne soit réellement utilisée dans une fonction. Il est recommandé d'utiliser des majuscules pour les noms des variables globales afin de les distinguer des autres variables.
Exemple
Créons un fichier de fonction nommé average.m et tapons-y le code suivant −
function avg = average(nums) global TOTAL avg = sum(nums)/TOTAL; end
Créez un fichier de script et tapez-y le code suivant −
global TOTAL; TOTAL = 10; n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42]; av = average(n)
Lorsque vous exécutez le fichier, il affichera le résultat suivant −
av = 35.500
MATLAB