Appliquer une fonction sur une matrice

Résolu/Fermé
Timmydu26 Messages postés 80 Date d'inscription mercredi 29 avril 2015 Statut Membre Dernière intervention 17 juin 2016 - 29 avril 2015 à 15:58
Timmydu26 Messages postés 80 Date d'inscription mercredi 29 avril 2015 Statut Membre Dernière intervention 17 juin 2016 - 29 avril 2015 à 17:17
Bonjour,
Je souhaite appliquer une fonction F qui à besoin de 4 arguments, sur une multitude de cas.
Pour cela j'ai contruit une matrice M=[nb_cas x 4], chaque ligne correspond donc a une situtation et je veut connaitre le resultats de chaque ligne, sans utiliser une boucle comme ceci:
for i=1:nb_cas
result(i) = F(M(i,:));
end
Avec la boucle for je sais que ça marche, mais je voudrais "vectoriser" mon traitement, mais je ne trouve pas de solution, j'ai essayer d'utiliser directement
R(:) = F(M) mais se me donne un vecteur de [1 x nb_cas] mais qui contient que la même valeur... :/
J'ai aussi essayer d'utiliser R(:) = arrayfun(@F, M) mais sa ne me donne toujours pas les bons resultats...
Une idées?

1 réponse

Timmydu26 Messages postés 80 Date d'inscription mercredi 29 avril 2015 Statut Membre Dernière intervention 17 juin 2016 30
29 avril 2015 à 17:17
On ne peut pas envoyer directement M. Il faut bien definir la fonction comme ceci :
function [resultats_function] = F(a,b,c,d)
"traitement et resultats"

puis il suffit de l'appeler comme cela:
R(:) = arrayfun(@F, M(:,1),M(:,2),M(:,3),M(:,4));
0