3 Stimmen

Fehler "Keine passende Methode" beim Aufruf einer neuen Funktion über ein klassenbezogenes Objekt

Ich habe eine Klasse mit dem Namen "FilterCriteria" definiert, der eine Reihe von Funktions-.m-Dateien (getAMask, getBMask usw.) zugeordnet sind. Wenn ich das FilterCriteria-Objekt erstelle und die Funktionen damit aufrufe, habe ich keine Probleme. Vor kurzem habe ich jedoch eine weitere Funktion hinzugefügt (die übrigens fast identisch mit einer anderen Funktion ist, die immer noch funktioniert), und Matlab gibt die Fehlermeldung zurück: "No appropriate method, property, or field getHMask for class FilterCriteria."

Ich habe im Internet nach diesem Problem gesucht, aber ich kann nichts finden. Die Datei getHMask.m befindet sich definitiv im richtigen Ordner, daher verstehe ich nicht, warum Matlab ein solches Problem zu haben scheint, sie zu finden.

Hier ist die Kopfzeile von getHMask.m:

function mask = getHMask(object, quadrant, channel)

Für jede Hilfe wären wir Ihnen sehr dankbar. Vielen Dank im Voraus.

6voto

Ben A. Punkte 1039

1) Ein Fehler, den ich manchmal mache, ist, dass ich die Datei nicht unter dem richtigen Namen speichere. Achten Sie darauf, dass die Großbuchstaben an der richtigen Stelle stehen usw.!

2) Eine weitere Ebene der Fehlerprüfung hier... Sie können aufrufen methods('object here') (siehe hier) und vergewissern Sie sich, dass dort die Methode (Funktion) aufgeführt ist, die Sie hinzufügen möchten. Wenn sie hier nicht auftaucht, sollten Sie die Implementierung der Methode überprüfen und sicherstellen, dass sie der Klasse, die Sie für Ihr Objekt verwenden, korrekt hinzugefügt wird.

4voto

tokamak Punkte 521

Ich hatte das gleiche Problem, das in Bens Punkt 2 angedeutet wird, und es hat mich verrückt gemacht. Es stellte sich heraus, dass MatLab nicht die neueste Version der m-Datei meiner Klasse lud. Ich erinnere mich vage daran, dass es mir früher eine Warnung darüber gab, weil es alte Instanzen der Klasse im Arbeitsbereich gab und um sie nicht ungültig zu machen, sagte es, dass es die Klasse nicht aktualisieren würde, bis ich den Arbeitsbereich lösche...

Wenn das also das Problem ist, kann ein Neustart von MatLab helfen, oder Sie können einfach folgendes eingeben >> clear

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X