J'ai trouvé des questions connexes, mais je n'ai pas vraiment trouvé de réponse là-bas.
J'écris une simple classe MATLAB afin d'apprendre la syntaxe de OOP à Matlab. Je suis très familier avec Python et je tire mes cheveux en essayant de travailler avec Matlab. Voici la définition: p> Ceci n'est certainement pas fait, mais j'utilise un petit script pour désordre avec l'objet: p> Error using Car/start
Too many input arguments.
3 Réponses :
Comme je ne peux pas comprendre comment supprimer cette question, je ferai de mon mieux pour y répondre. Comme d'autres langues, la programmation orientée objet dans MATLAB souhaite voir J'ai traversé mon code et ajouté J'espère que cela aide toute personne qui rencontre cette question. P> obj code> comme premier paramètre dans les méthodes de classe (comme
auto code> en python). Cette référence à l'objet est nécessaire pour modifier ses attributs. Je n'incluait pas cela dans les définitions de la méthode, alors quand j'ai appelé la méthode, je recevais une erreur "trop d'arguments". C'est parce que si vous faites
foo.method (a, b) code>, alors l'objet
foo code> est effectivement transmis comme paramètre, de sorte que la fonction fonctionne réellement 3 entrées, c'est-à-dire < Code> Méthode (FOO, A, B) CODE>. P>
obj code> dans les endroits appropriés, mais n'a pas utilisé la commande code> Clear code> dans la fenêtre de commande MATLAB. Depuis que je suis nouveau à Matlab, je n'étais pas au courant de son importance. Je viens de supposer sauver le dossier et la ré-instantanée de ma classe serait suffisante. Ce n'est pas. P>
Vous avez répondu à votre propre question qui est géniale. Mais, il semble que votre question inclut le code même que vous avez lutté pour être exécuté au début. J'aurais pensé que votre code au début ressemblait à: et, seulement plus tard, devenez ce que vous avez écrit dans votre question: p> classdef Car < handle
properties
speed = [0,0] %x,y velocity
position = [0,0]
running = false
end
methods
function obj = Car(obj,pos, spd)
obj.position = pos;
obj.speed = spd;
end
function accelerate(obj,x,y) % Add to speed
obj.speed = obj.speed + [x,y]
end
function position = getPosition(obj)
position = obj.position
end
function start(obj)
obj.running = true
end
function stop(obj)
obj.running = false
end
end
end
Vous n'avez pas besoin de transmettre l'OBJ à l'entrée si vous déclarez les méthodes en tant que statique:
classdef class1 methods (Static) function y=aPLUSb(a,b) y=a+b; end end end
Je devrais préciser que c'est toujours la même erreur "trop d'arguments d'entrée" pour toute méthode que j'essaie d'appeler un objet.
Quelle version de matlab? Votre code travaille pour moi sur R2011b.
Sh * t ... Je viens d'utiliser la commande Clear, et maintenant ça marche. Devrais-je supprimer cette question?