Comment appliquer cellfun (ou arrayfun ou structfun) avec une constante supplémentaire arguments d'entrée?
Je veux appliquer une fonction à chaque élément d'une matrice de cellules de -- j'ai donc cellfun
. Cependant, la fonction prend deux arguments supplémentaires (une chaîne et d'un vecteur), que je tiens à garder constante pour tous les éléments de la matrice de cellules; c'est à dire que j'aimerais faire quelque chose comme:
cellfun(@myfun, cellarray, const1, const2)
sens:
for i = 1:numel(cellarray),
myfun(cellarray{i}, const1, const2);
end
Est-il un moyen de le faire sans la création de la cellule intermédiaire des tableaux contenant des numel(cellarray)
des copies de const1
et const2
?
OriginalL'auteur antony | 2010-07-19
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire à l'aide d'un fonction anonyme que les appels
myfun
avec les deux autres arguments:const1, const2
(pas une bonne alternativ)?Je ne suis pas sûr de l'endroit où les frais généraux supplémentaires venant, mais vous pourriez peut-être utiliser le profiler pour le savoir. Je voudrais aussi essayer de sortir de la boucle for alternative dans la question, car pour les boucles ne supportez pas le genre de pénalité dans MATLAB (parfois, ils sont même le plus rapide de remplacement).
OriginalL'auteur gnovice
Une autre astuce est d'utiliser ARRAYFUN sur les indices:
si les valeurs de retour de
myfun
ne sont pas des scalaires, vous pouvez définir le'UniformOutput',false
option.OriginalL'auteur Amro