Matlab Erreur: Trop d'arguments de sortie
J'utilise la fonction suivante dans un Matlab programme:
...
...
...
[A, B, C, D, E] = function (F, G, H, I, J, K, L, M, N, O, P)
...
...
...
et j'obtiens le message d'erreur suivant:
??? Error using ==> function
Too many output arguments.
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P sont les vecteurs d'entrées et de sorties de la fonction.
mais le même programme fonctionne très bien quand j'ai remplacé la ligne de la fonction par son scénario complet!
Pouvez-vous me dire où je devrais regarder pour trouver l'erreur?
- Vous pouvez poster la définition exacte de votre fonction et la ligne où vous l'appeler?
Vous devez vous connecter pour publier un commentaire.
Avez-vous appeler votre fonction
function
? C'est une TRÈS MAUVAISE idée, carfunction
réservé de mot-clé.En supposant que vous avez tout simplement remplacé le nom de la fonction que vous voulez l'appeler avec "fonction" dans votre exemple: Vous avez besoin de définir d'entrée et de sortie dans la définition de la fonction. Par exemple, pour une fonction appelée 'myFun", qui accepte F-P comme entrées, et doit renvoyer Un-E en tant que sorties, vous écrivez comme la première ligne de la fonction
MODIFIER
De préciser: Vous obtenez l'erreur, parce que vous demandez pour plus d'arguments en sortie de la fonction d'approvisionnement. Vous obtiendrez le même message d'erreur si vous souhaitez appeler
[u,v]=sin(0)
, depuissin
est défini avec 1 sortie seulement. Ainsi, vous devez vérifier votre fonction de signature pour résoudre le problème.EDIT 2
Nous allons faire un exemple
J'ouvre l'éditeur pour définir la fonction
Ensuite, j'ai enregistrer la fonction "myFun.tapis" sur le Matlab chemin.
Maintenant je peux appeler myFun comme suit:
Cependant, si je l'appelle myFun avec quatre arguments de sortie, je vais obtenez une erreur
En fait je suis exactement l'erreur que tu as, parce que je ne définis myFun avec trois arguments de sortie.
Remarque: Vous pouvez toujours appeler une fonction avec moins que le nombre de sortie défini arguments, mais jamais avec plus.
Matlab refuse de prendre des assignations comme
Essayez ceci dans l' Matlab shell. Il vous donnera la même erreur.
Sinon, ne
EDIT: Nevermind cette réponse. Elle ne convient pas à votre question.
J'ai essayé de tester le programme avec une seule sortie à chaque fois pour A, B, C, D, E:
la fonction [A] = myFun1 (F, G, H, I, J, K, L, M, N, O, P)
la fonction [B] = myFun2 (F, G, H, I, J, K, L, M, N, O, P)
la fonction [C] = myFun3 (F, G, H, I, J, K, L, M, N, O, P)
la fonction [D] = myFun4 (F, G, H, I, J, K, L, M, N, O, P)
la fonction [E] = myFun5 (F, G, H, I, J, K, L, M, N, O, P)
il fonctionne et le programme fonctionne bien, mais la sortie est la seule différence entre les 5 fonctions myFun1, myFun2, myFun3, myFun4, myFun5.
Je pense que ce n'est pas pratique.
Donc, est-il possible d'avoir une seule fonction myfun avec 5 sorties?
Je suppose que votre fonction a vraiment 5 arguments de sortie.
Si oui, il y a probablement une autre fonction avec le même nom dans le Matlab Chemin avec un nombre différent d'arguments de sortie.
Il m'arrive aussi maintenant et puis, si je créer des fonctions avec le même nom, mais avec plus ou moins d'arguments de sortie.
Je vois que vous charger des données à partir d'un chemin d'accès spécifié. Peut-être que vous n'êtes pas dans le dossier avec la fonction que vous voulez vraiment appeler.
Essayez de renommer votre fonction (fichier + nom de la fonction à l'intérieur). Essayez également de Définir le Chemin d'accès par défaut (Fichier->Set Path...-> valeur par Défaut) et modifiez le répertoire du répertoire avec votre fonction. Si rien de tout cela fonctionne, puis essayer toutes les étapes de nouveau, je suis sûr que c'est la raison de vos erreurs.
@lebland
Le code que vous avez posté définit une fonction avec une variable de retour appelé
matrice_return
. Il semble que vous voulez revenir dans les cinq variablesAA,BB,CC,DD,EE
. Donc maintenant modifier votre définition de fonction comme @Jonas a expliqué très clairement. si vous aviez posté votre définition dans votre question, nous avons trié ce heures.Votre problème est avec le matrice_return variable. Au lieu de:
essayer:
Si vous ne souhaitez pas changer de myFun définition, vous pouvez effectuer les opérations suivantes dans votre script:
mon programme:
ma Fonction:
mon problème est résolu, je remercie tous ceux qui ont donné de leur temps pour résoudre mon problème.
Je n'ai pas s'attendre à ce que la solution est si simple!!