Créer une fonction dans MATLAB

Ammar Ali 25 novembre 2021
Créer une fonction dans MATLAB

Ce tutoriel abordera la création de fonctions à l’aide de la variable function dans MATLAB.

Créer une fonction à l’aide de la variable function dans MATLAB

Une fonction dans Matlab se compose principalement de trois éléments de sortie, d’entrée et de nom de fonction. Pour définir une fonction, nous utilisons la fonction variable, puis nous définissons les sorties, le nom de la fonction et les entrées de la fonction. Après cela, nous écrirons notre code à l’intérieur de la fonction. Le nom de la fonction doit commencer par un caractère alphabétique et un nom de fonction peut contenir des nombres, des chiffres et des traits de soulignement. Pour indiquer la fin d’une fonction, on peut utiliser la variable end. Par exemple, consultez le code ci-dessous.

function outputs = function_Name(inputs)
    Your code
end

Une fonction ne peut avoir qu’une seule sortie. Par exemple, définissons une fonction qui acceptera un tableau de nombres, et la sortie de la fonction sera la moyenne du tableau. Voir le code ci-dessous.

vect = [1 3 5]
averg = average(vect)


function a = average(v)
a = mean(v);
end

Production:

vect =

     1     3     5


averg =

     3

Une fonction peut également avoir deux sorties. Par exemple, définissons une fonction qui acceptera un tableau, et elle nous donnera la moyenne du tableau et l’écart type. Voir le code ci-dessous.

vect = [1 3 5]
[averg, stanD] = average(vect)


function [a,s] = average(v)
a = mean(v);
s = std(v);
end

Production:

vect =

     1     3     5


averg =

     3


stanD =

     2

Nous pouvons définir une fonction dans un fichier de script, mais nous devons la définir à la fin du code. Vous pouvez également définir plusieurs fonctions dans un seul fichier, et toutes les fonctions doivent se trouver à la fin du code. Une fonction peut également appeler une autre fonction. Par exemple, vous pouvez définir deux fonctions, et la deuxième fonction peut appeler la première fonction. Nous pouvons également définir des fonctions avec validation des entrées afin de pouvoir vérifier les entrées. Par exemple, définissons une fonction qui vérifiera l’entrée, que ce soit un entier ou non, et si c’est un entier, elle effectuera l’opération ; sinon, il enverra une erreur. Nous pouvons le faire en utilisant les arguments variables. Voir le code ci-dessous.

vect = 'a';
[averg, stanD] = average(vect)


function [a,s] = average(v)
arguments
        v {mustBeNumeric, mustBeFinite}
    end
a = mean(v);
s = std(v);
end

Production:

Error using Untitled>average
Invalid argument at position 1. Value must be numeric.

Error in Untitled (line 3)
[averg, stanD] = average(vect)

Dans le code ci-dessus, nous avons passé une chaîne au lieu d’un tableau numérique, et Matlab a affiché une erreur indiquant que la valeur doit être numérique. Gardez à l’esprit que lorsque vous appelez une fonction, vous devez fournir les entrées et sorties spécifiques. Par exemple, si nous définissons une fonction avec deux entrées et deux sorties, nous devons définir deux entrées et deux sorties lors de l’appel de fonction ; sinon, il affichera une erreur, mais si vous souhaitez définir une fonction avec un nombre variable de sorties et d’entrées. Nous pouvons le faire en utilisant la variable varargin pour définir les entrées variables d’une fonction. Nous pouvons utiliser la variable nargin qui nous indique le nombre d’entrées saisies par l’utilisateur. Après cela, nous pouvons spécifier des conditions pour les entrées. Par exemple, nous pouvons définir des exigences selon lesquelles si l’utilisateur entre une entrée, ce sera la sortie, et si l’utilisateur entre deux entrées, alors ce sera la sortie, et ainsi de suite. Par exemple, définissons une fonction qui nous donnera le nombre d’entrées saisies par l’utilisateur. Voir le code ci-dessous.

NumInputs('a',2,"start")

function NumInputs(varargin)
    disp("Number of inputs: " + nargin)
    celldisp(varargin)
end

Production:

Number of inputs: 3
 
varargin{1} =
 
a
 
 
varargin{2} =
 
     2

 
 
varargin{3} =
 
start

Nous pouvons également définir des sorties variables dans une fonction à l’aide de la variable varargout, et nous pouvons garder une trace du nombre de sorties que l’utilisateur a définies à l’aide de la variable nargout. Par exemple, définissons une fonction qui nous donnera la moyenne et l’écart type. Si l’utilisateur ne définit qu’une seule sortie, la fonction ne retournera que la moyenne du tableau. Si l’utilisateur définit deux variables de sortie, la fonction renverra l’écart type et la moyenne du tableau. Voir le code ci-dessous.

v = [1 2 6];
[m]= AVGSTD(v)
[mean,st] = AVGSTD(v)

function [m,varargout] = AVGSTD(v)
    m = mean(v);
    if(nargout>1)
        varargout{1} = std(v);
    end
end

Production:

m =

     3


mean =

     3


st =

    2.6458

Dans le code ci-dessus, nous avons appelé la fonction AVGSTD() deux fois, la première fois avec une seule sortie et la deuxième fois avec deux sorties. Au premier appel, la fonction n’a renvoyé que la moyenne, mais au deuxième appel, la fonction a renvoyé la moyenne et l’écart type. Nous pouvons également valider le nombre de sorties en utilisant l’argument variable. Par exemple, si l’utilisateur essaie de saisir plus de deux variables dans la sortie, nous pouvons lui montrer une erreur indiquant que cette fonction n’accepte que deux sorties. Nous pouvons également définir des fonctions réutilisables dans Matlab, qui seront stockées dans un fichier, et nous pouvons les appeler en utilisant le nom du fichier. Pour définir une telle fonction, il suffit de nommer le fichier Matlab dans le nom de la fonction. Par exemple, si la fonction a le nom moyenne, le fichier Matlab doit avoir le même nom. Pour appeler la fonction, nous devons créer un autre fichier de script dans le même répertoire où le fichier de fonction a été placé, et nous pouvons appeler la fonction en utilisant son nom à l’intérieur du fichier de script.

Auteur: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Article connexe - MATLAB Function