|
|
Dem Constructor Referenzen von anderen Objekten übergeben |
|
Milo |
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 19.03.09
|
|
|
|
Wohnort: KA
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.08.2011, 10:46
Titel: Dem Constructor Referenzen von anderen Objekten übergeben
|
|
|
|
|
Hallo,
ich habe hier Matlab2007b (RedHat) und versuche mich gerade ein wenig in die OOP von Matlab einzuarbeiten. Hierzu habe ich mir die Einführung angesehen. Mein erster Versuch war soweit auch zielführend. Ich habe eine Klasse für 3D-Punkte erstellt und der eine Methode zur Bestimmung des Abstandes zu einem weiteren Punkt gegeben:
Hiermit kann ich nun folgendes machen:
Das funktioniert soweit.
Nun habe ich eine weitere Klasse definiert, die zum Instanziieren zwei Punktobjekte (f1 und f2) benötigt.
mit diesem konnte ich dann meine beiden Punktreferenzen übergeben und ein Ellipsenobjekt erzeugen:
... das ganze funktioniert jedoch nur solange, bis ich Matlab einmal neu gestartet habe. Wenn ich jetzt versuche, die Instanz zu erzeugen, erhalte ich eine Fehlermeldung:
Zitat: |
??? Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N)
to change the limit. Be aware that exceeding your available stack space can
crash MATLAB and/or your computer.
Error in ==> SpatialEllipse |
Durch was wird diese Rekursion denn ausgelöst? An der Klasse habe ich nichts geändert. Werden die Klassen, die man erzeugt, noch woanders vorgehalten? Im Moment speichere ich sie in einem Unterverzeichnis von meinem Arbeitsverzeichnis. Ich frage deshalb, weil ich manchmal das Gefühl habe, dass Änderungen an den Klassen nicht direkt verfügbar sind sondern erst nach einem Neustart von Matlab. Gibts hier ggf. einen Befehl, den Klassen-Cache - sofern vorhanden - zu leeren?
Sollte ich mein Problem unzureichend beschrieben haben, bitte kurz Bescheid geben; ansonsten freue ich mich über einen Hinweis zur Problembewältigung!
Schöne Grüße
Milo
_________________
Die Geodäten - Portal für Vermesser und Geoinformatiker || Freie Ausgleichungssoftware
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.08.2011, 13:07
Titel:
|
|
Hallo,
der Debugger sollte helfen, das Problem zu lösen.
Im übrigen wurde die Objektorientierte Programming in MATLAB mit 2008a grundlegend überarbeitet und verbessert; ich empfehle also den Umstieg auf eine neuere Version von MATLAB.
Grüße,
Harald
|
|
|
Milo |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 19.03.09
|
|
|
|
Wohnort: KA
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.08.2011, 14:47
Titel:
|
|
Hallo Harald,
Harald hat Folgendes geschrieben: |
der Debugger sollte helfen, das Problem zu lösen. |
Mein gezeigter Quellcode ist/war vollständig. Ich kann nicht erkenne, wie er mir weiterhelfen könnte.
Harald hat Folgendes geschrieben: |
Objektorientierte Programming in MATLAB mit 2008a grundlegend überarbeitet |
Ich habe diesen Beitrag gefunden, wo das selbe Problem beschrieben wird. Eine Lösung für Matlab 2007 scheint es demnach nicht zu geben bzw. die dort präsentierte finde ich eher umständlich.
Wobei ich mich frage, warum es funktioniert, solange ich Matlab nicht Neustarte...
Schöne Grüße
Milo
_________________
Die Geodäten - Portal für Vermesser und Geoinformatiker || Freie Ausgleichungssoftware
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.08.2011, 16:57
Titel:
|
|
Hallo,
das Verwenden des Debuggers hat nichts mit Vollständigkeit des Codes zu tun. Er ermöglicht dir nur, an bestimmten Stellen des Codes anzuhalten und nachzuvollziehen, was gerade vor sich geht.
Das mit dem Neustart ist mir allerdings auch schleierhaft. Vor allem: wie soll sich ein Neustart von MATLAB von einem kompletten Neustart des Rechners (so wie ich dich verstehe, geht es dann wieder?) unterscheiden?
Zusatz: ich habe es eben mit 2009a versucht (p=q=1) und hatte auch nach Neustart von MATLAB keine Probleme.
Grüße,
Harald
|
|
|
Milo |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 19.03.09
|
|
|
|
Wohnort: KA
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.08.2011, 07:14
Titel:
|
|
Hallo,
beim Neustart haben wir uns ggf. falsch verstanden. Wenn die Klasse in der Matlab-Instanz aufrufe, in der ich sie erstellt habe, funktioniert sie. Wenn ich Matlab zwischenzeitlich aus und wieder an mache, bekomme ich diese Fehlermeldung. Der Rechner (ein Server) wird hierzu nicht neugestartet.
Wenn Du p=q=1 setzt, funktioniert es. Instanzen mit primitiven Instanzvariablen gehen; Probleme machen nur (selbsterstellte) Objekte. Das scheint aber wirklich an der Version von Matlab zu liegen, wie der verlinkte Beitrag in meinem letzten Posting zumindest suggeriert.
Gruß Milo
_________________
Die Geodäten - Portal für Vermesser und Geoinformatiker || Freie Ausgleichungssoftware
|
|
|
Milo |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 19.03.09
|
|
|
|
Wohnort: KA
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.09.2011, 10:11
Titel:
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|