La réponse courte : la fonction intégrée ARRAYFUN fait exactement ce que votre carte pour les tableaux numériques :
>> y = arrayfun(@(x) x^2,1:10)
y =
1 4 9 16 25 36 49 64 81 100
Il existe deux autres fonctions intégrées qui se comportent de manière similaire : CELLFUN (qui opère sur les éléments des tableaux de cellules) et STRUCTFUN (qui opère sur chaque champ d'une structure).
Cependant, ces fonctions ne sont souvent pas nécessaires si vous tirez parti de la vectorisation, en particulier en utilisant la méthode des éléments. opérateurs arithmétiques . Pour l'exemple que vous avez donné, une solution vectorisée serait :
>> x = 1:10;
>> y = x.^2
y =
1 4 9 16 25 36 49 64 81 100
Certaines opérations s'effectuent automatiquement entre les éléments (comme l'ajout d'une valeur scalaire à un vecteur), tandis que d'autres opérateurs ont une syntaxe spéciale pour les opérations par élément (indiquées par un "." devant l'opérateur). De nombreuses fonctions de MATLAB sont conçues pour opérer sur des arguments vectoriels et matriciels à l'aide d'opérations par élément, et ne nécessitent donc pas de fonctions map.
En résumé, voici quelques façons différentes de mettre au carré chaque élément d'un tableau :
x = 1:10; %# Sample array
f = @(x) x.^2; %# Anonymous function that squares each element of its input
%# Option #1:
y = x.^2; %# Use the element-wise power operator
%# Option #2:
y = f(x); %# Pass a vector to f
%# Option #3:
y = arrayfun(f,x); %# Pass each element to f separately
Bien sûr, pour une opération aussi simple, l'option 1 est le choix le plus judicieux.