Comment appliquer une fonction qui renvoie une sortie non scalaire à des tableaux en utilisant arrayfun
?Application d'une fonction sur un tableau qui renvoie des sorties de taille différente de façon vectorielle
Par exemple - Comment peut vectoriser le code suivant?
array = magic(5);
A = cell(size(array));
for i=1:5
for j=1:5
A{i,j} = 1:array(i,j);
end
end
Cette tentative naïve de vectorisation ne fonctionne pas, parce que la sortie n'est pas un scalaire
array = magic(5);
result = arrayfun(@(x)(1:x),array);
Vous ne devez jamais les parenthèses autour de la fonction. Mais cela aide beaucoup avec la visibilité. De plus, 'arrayfun' ne vectorise pas vraiment le code, il cache juste la boucle (et permettra à Matlab de multi-threader, si cela en vaut la peine). Notez que le "trick" de la cellule est très utile avec 'accumarray' qui n'a pas l'option' uniformOutput'. – Jonas
Voilà ce que le SO est pour :) – Jonas