Appliquer la fonction à tous les éléments de la matrice
Je veux appliquer une fonction sur chaque élément d'une matrice. J'ai écrit le code suivant:
function p = an(x)
p= x + 1;
end
La matrice est par exemple:
B = [1 2 3; 3 4 5; 6 7 8]
Quand j'essaie de le faire:
arrayfun(@an , B(1, :) , B(2, :), B(3, :))
J'obtiens cette erreur:
??? Error using ==> arrayfun
Undefined function or method 'an' for input arguments of type 'double'.
Je ne comprends pas pourquoi. Comment je peux résoudre ce problème? Est-il un moyen plus facile de le faire?
Quel est votre sortie désirée?
OriginalL'auteur user1943029 | 2013-01-02
Vous devez vous connecter pour publier un commentaire.
Problème principal
Cela signifie que MATLAB ne reconnaît pas votre fonction
an
. Assurez-vous quean
est mis en œuvre dans un autre m-fichier appeléan.m
, et qu'il se trouve dans votre répertoire de travail courant.Problème supplémentaire
Je vois que votre
arrayfun
syntaxe est erronée. Une fois que vous résoudre votre problème actuel, je prédis que vous rencontrerez un autre message d'erreur:Le problème est que la fonction
an
accepte un seul argument d'entrée, mais vous êtes de passage à trois arguments enarrayfun
. Au lieu de cela, passer un seul argument, par exemple:ou de modifier
an
à accepter trois arguments, par exemple:Je ne suis pas sûr de ce que vous essayez d'atteindre, donc c'est à vous de choisir.
J'ai une autre question: si je change la "une" de la fonction: la fonction ans = un(x) si x == 1 ans = x+1; else ans = x+2; fin fin Comment puis-je appliquer cette fonction sur chaque cellule de la matrice? (J'ai essayé d'écrire: arrayfun(@une,B), mais il ne fonctionne pas. je vous remercie .
vous êtes à l'aide de la variable
ans
qui est déjà mot clé réservé. Utilisation d'un autre nom et il devrait fonctionner.Il ne marche pas avec un autre nom. Est-il une autre façon de le résoudre?
Pouvez-vous donner plus de détails à propos de "ça ne fonctionne pas"? Obtenez-vous un message d'erreur?
OriginalL'auteur Eitan T