Matlab compréhension de la liste
Puis-je écrire la suite en une seule ligne?
x = [1,3,5]
res = zeros(1,size(x,2));
for i=1:size(x,2);
res(i) = foo(x(i);
end;
Supposer que les foo fonction ne gère pas les tableaux comme prévu. Dans mon cas, toto retourne un scalaire, même lorsque vous donnez un tableau comme argument.
En Python, par exemple, il devrait ressembler à ceci:
x = [1,3,5]
res = [foo(y) for y in x]
source d'informationauteur Lucy Brennan
Vous devez vous connecter pour publier un commentaire.
arrayfun
est ce que vous avez besoin. Par exemple:Depuis
foo
toujours retourne un scalaire, le ci-dessus ne fonctionne etres
sera également un vecteur de même dimension quex
. Sifoo
retourne la longueur variable de sortie, alors vous aurez à définir'UniformOutput'
àfalse
ou0
dans l'appel àarrayfun
. La sortie sera alors uncell
tableau.Juste pour ajouter à la bonne réponse de @yoda, au lieu d'utiliser
UniformOutput
vous pouvez également utiliser{}
parenthèses:Aussi, en certaines occasions,
foo
est déjà vectorisé.