Fonctions MATLAB : définition, espace de travail, entrées et sorties
Une fonction est un groupe d'instructions qui effectuent ensemble une tâche. Dans MATLAB, les fonctions sont définies dans des fichiers séparés. Le nom du fichier et celui de la fonction doivent être identiques.
Les fonctions opèrent sur des variables dans leur propre espace de travail, 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 retourner plusieurs arguments de sortie.
Syntaxe d'une instruction de fonction :
function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)
Exemple
La fonction suivante nommée mymax doit être écrite dans un fichier nommé mymax.m. Elle prend cinq nombres en argument et retourne le maximum de ces nombres.
Créez un fichier fonction nommé mymax.m et saisissez le code suivant :
function max = mymax(n1, n2, n3, n4, n5) %Cette fonction calcule le maximum des % cinq nombres donnés en entrée 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é function. Elle donne le nom de la fonction et l'ordre des arguments. Dans notre exemple, la fonction mymax a cinq arguments d'entrée et un argument de sortie.
Les lignes de commentaire qui suivent immédiatement l'instruction de fonction fournissent le texte d'aide. Ces lignes sont affichées quand vous tapez :
help mymax
MATLAB exécute l'instruction ci-dessus et retourne le résultat suivant :
This function calculates the maximum of the five numbers given as input
Vous pouvez appeler la fonction comme suit :
mymax(34, 78, 89, 23, 11)
MATLAB exécute l'instruction ci-dessus et retourne le résultat suivant :
ans = 89
Fonctions anonymes
Une fonction anonyme est comme une fonction inline dans les langages de programmation traditionnels, définie au sein d'une seule instruction MATLAB. Elle consiste en une seule expression MATLAB et peut avoir un nombre quelconque d'arguments d'entrée et de sortie.
Vous pouvez définir une fonction anonyme directement dans la ligne de commande MATLAB ou au sein d'une fonction ou d'un script.
Cela vous permet de 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 prend deux nombres en entrée et retourne le premier nombre élevé à la puissance du second nombre.
Créez un fichier script et saisissez le code suivant :
power = @(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 nombre quelconque de sous-fonctions optionnelles 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 dans le fichier de fonction qui les définit.
Exemple
Écrivons une fonction nommée quadratic 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. Elle retournerait les racines.
Le fichier de fonction quadratic.m contiendra la fonction principale quadratic et la sous-fonction disc, qui calcule le discriminant.
Créez un fichier fonction quadratic.m et saisissez le code suivant :
function [x1,x2] = quadratic(a,b,c) %cette fonction retourne les racines de % une équation quadratique. % Elle prend 3 arguments d'entrée % qui sont les coefficients de x2, x et le %terme constant % Elle retourne les racines d = disc(a,b,c); x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end % fin de la fonction quadratic dis = disc(a,b,c) %fonction calcule le discriminant dis = sqrt(b^2 - 4*a*c); end % fin de la sous-fonction
Vous pouvez appeler la fonction ci-dessus depuis l'invite de commande comme suit :
quadratic(2,4,-4)
MATLAB exécute l'instruction ci-dessus et retourne le résultat suivant :
ans = 0.7321
Fonctions imbriquées
Vous pouvez définir des fonctions dans le corps d'une autre fonction. Ce sont des fonctions imbriquées. Une fonction imbriquée contient l'un ou l'ensemble des composants de toute autre fonction.
Les fonctions imbriquées sont définies dans la portée d'une autre fonction et elles partagent l'accès à l'espace de travail de la fonction conteneur.
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 quadratic de l'exemple précédent, mais cette fois la fonction disc sera une fonction imbriquée.
Créez un fichier fonction quadratic2.m et saisissez le code suivant :
function [x1,x2] = quadratic2(a,b,c) function disc % fonction imbriquée d = sqrt(b^2 - 4*a*c); end % fin de la fonction disc disc; x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end % fin de la fonction quadratic2
Vous pouvez appeler la fonction ci-dessus depuis l'invite de commande comme suit :
quadratic2(2,4,-4)
MATLAB exécute l'instruction ci-dessus et retourne le résultat suivant :
ans = 0.73205
Fonctions privées
Une fonction privée est une fonction principale qui n'est visible que pour un groupe limité d'autres fonctions. Si vous ne voulez pas exposer l'implémentation d'une ou plusieurs fonctions, vous pouvez les créer comme fonctions privées.
Les fonctions privées résident dans des sous-dossiers portant le nom spécial private.
Elles ne sont visibles que pour les fonctions du dossier parent.
Exemple
Réécrivons la fonction quadratic. Cette fois, la fonction disc calculant le discriminant sera une fonction privée.
Créez un sous-dossier nommé private dans le répertoire de travail. Stockez le fichier fonction suivant disc.m dedans :
function dis = disc(a,b,c) %fonction calcule le discriminant dis = sqrt(b^2 - 4*a*c); end % fin de la sous-fonction
Créez un fichier fonction quadratic3.m dans votre répertoire de travail et saisissez le code suivant :
function [x1,x2] = quadratic3(a,b,c) %cette fonction retourne les racines de % une équation quadratique. % Elle prend 3 arguments d'entrée % qui sont les coefficients de x2, x et le %terme constant % Elle retourne les racines d = disc(a,b,c); x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end % fin de quadratic3
Vous pouvez appeler la fonction ci-dessus depuis l'invite de commande comme suit :
quadratic3(2,4,-4)
MATLAB exécute l'instruction ci-dessus et retourne 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 voulez accéder à cette variable depuis l'espace de travail de base, déclarez la variable sur la ligne de commande.
La déclaration globale doit se produire avant que la variable ne soit effectivement utilisée dans une fonction. C'est une bonne pratique d'utiliser des majuscules pour les noms de variables globales afin de les distinguer des autres variables.
Exemple
Créons un fichier fonction nommé average.m et saisissons le code suivant :
function avg = average(nums) global TOTAL avg = sum(nums)/TOTAL; end
Créez un fichier script et saisissez 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 affiche le résultat suivant :
av = 35.500
MATLAB
- 10 fonctions essentielles d'Insight pour optimiser l'impression FDM Stratasys
- Les Fonctions en C++ Expliquées avec des Exemples de Code Pratiques
- Maîtriser les fonctions lambda Python : exemples pratiques et bonnes pratiques
- Maîtriser les Fonctions Verilog pour une Conception RTL Efficace
- Maîtriser les fonctions en C : Structure, déclaration et bonnes pratiques
- MATLAB : Aperçu complet de l'environnement de calcul numérique de référence
- Comprendre les variables dans MATLAB : Bases et exemples
- Commandes MATLAB essentielles pour un calcul efficace
- Types de données MATLAB : Guide complet