arrayfun
Appliquer une fonction à chaque élément d'un tableau.
📝Syntaxe
B = arrayfun(func, A)
B = arrayfun(func, A1, ..., An)
B = arrayfun(..., 'UniformOutput', false)
B = arrayfun(..., 'ErrorHandler', errfunc)
[B1, ..., Bm] = arrayfun(...)
📥Arguments d'entrée
Paramètre Description
func handle de fonction (ou chaîne de caractères contenant le nom de la fonction) à appliquer à chaque élément. Avec l'option 'UniformOutput' à true (valeur par défaut), func doit renvoyer à chaque appel un scalaire de même classe, afin que les résultats puissent être concaténés dans un tableau.
A, A1, ..., An tableaux d'entrée, tous de même taille. func est appelée sur les éléments correspondants A1(i), ..., An(i).
'UniformOutput' scalaire logique (true par défaut). Si false, les sorties sont renvoyées dans un tableau cellulaire et func peut renvoyer des valeurs de taille et de classe quelconques.
'ErrorHandler' handle de fonction appelé lorsque func déclenche une erreur. Il reçoit une structure décrivant l'erreur (champs 'message', 'identifier' et 'stack') suivie des éléments passés à func, et renvoie la ou les sorties de remplacement. Sans gestionnaire d'erreur, l'erreur est propagée.
📤Arguments de sortie
Paramètre Description
B, B1, ..., Bm sorties de la fonction appliquée élément par élément. Tableau cellulaire si 'UniformOutput' est false.
📄Description

arrayfun(func, A) applique la fonctionfunc à chaque élément du tableauA, et renvoie le résultat dans B avec la même taille que A.

arrayfun(func, A1, ..., An) applique func aux éléments correspondants des tableaux d'entrée. Tous les tableaux doivent avoir la même taille.

Utilisez l'option 'UniformOutput' àfalse pour autoriser des valeurs de sortie qui ne peuvent pas être concaténées dans un seul tableau. Dans ce cas, le résultat est un tableau cellulaire.

Avec 'UniformOutput' à true (valeur par défaut), func doit renvoyer sur chaque élément un scalaire de même classe pour que les résultats puissent être assemblés en un tableau ; sinon, utilisez 'UniformOutput', false.

Utilisez l'option 'ErrorHandler' pour fournir une fonction invoquée lorsque func échoue sur un élément, par exemple pour substituer une valeur par défaut.

[B1, ..., Bm] = arrayfun(...) capture plusieurs sorties de la fonction appliquée.

De nombreuses fonctions et opérateurs intégrés sont déjà vectorisés et se propagent sur les tableaux ; lorsque le corps de func est une simple expression élément par élément, appliquer l'expression équivalente directement au tableau entier (par exemple A.^2 + B.^2) est généralement le choix le plus efficace.

💡Exemples
Appliquer mean à un champ de structure
S(1).f1 = rand(1, 5);
S(2).f1 = rand(1, 10);
S(3).f1 = rand(1, 15);
means = arrayfun(@(x) mean(x.f1), S);
Expression élément par élément sur plusieurs tableaux
A = reshape(1:12, 3, 4);
B = reshape(12:-1:1, 3, 4);
R = arrayfun(@(x, y) sqrt(x.^2 + y.^2), A, B)
Renvoyer plusieurs sorties d'une fonction
f = @(x) deal(x, x^2);
[A, B] = arrayfun(f, 1:4);
Renvoyer des sorties de tailles variables dans un tableau cellulaire
C = arrayfun(@(x) 1:x, [2 3 4], 'UniformOutput', false)
Traiter les erreurs avec un gestionnaire d'erreur
errfun = @(S, x) NaN;
R = arrayfun(@(x) x(2), [1 2 3], 'ErrorHandler', errfun)
🔗Voir aussi
cellfunbsxfun
🕔Historique des versions
Version Description
1.14.0 version initiale
2.0.0 option 'ErrorHandler' et notes d'utilisation documentées
Modifier cette page sur GitHub