WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Kompilieren im Debug Mode

 

Tschanin
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 15.04.15
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 10.06.2015, 14:41     Titel: Kompilieren im Debug Mode
  Antworten mit Zitat      
Hallo,
ich hätte da mal eine kurze Frage. Ich soll an einem Algorithmus arbeiten und die Ausgaben verändern. Er besteht aus einer komplexen Funktion, die alles mögliche berechnet und einer Datei, die diese Funktion aufruft und dann verschiedene Plots ausgibt .Allerdings lässt sich der Code nicht bis zum Schluss kompilieren.
In den Kommentaren heißt es an der Stelle wo der Fehler auftritt "Run function in debug mode with a break point at line 110 or line 131" und danach "uses weird variable names because in debug mode and to not overwrite important variables".
Ich weiß nicht genau was ich jetzt damit anfangen soll, denn wenn ich wie beschrieben einen Breakpoint setzte, dann hört er an der Stelle in der Funktion auf und gibt gar nichts aus.
Weiß jemand was damit gemeint ist?
Die Lösung ist bestimmt trivial aber ich kenn mich mit Matlab nicht aus und komm so nicht weiter Sad
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 11.06.2015, 13:41     Titel: Re: Kompilieren im Debug Mode
  Antworten mit Zitat      
Hallo Tschanin,
Zitat:
Allerdings lässt sich der Code nicht bis zum Schluss kompilieren.

Bitte erklären das mit den notwendigen Details. Welche Fehlermeldung bekommst Du beim Kompilieren?

Zitat:
In den Kommentaren heißt es an der Stelle wo der Fehler auftritt "Run function in debug mode with a break point at line 110 or line 131" und danach "uses weird variable names because in debug mode and to not overwrite important variables".

Wenn man Variablen dynamisch per EVAL oder ASSIGNIN erzeugt, kann das im Debug-Mode zu anderen Ergebnissen führen, als wenn man den Code normal laufen lässt, z.B. nach einer Komiplierung. Deswegen ist es dringend wichtig auf EVAL zu verzichten, denn sie können Programme bis zur Funktionslosigkeit zerstören.
Dies zu lösen ist nicht trivial. Ohne den Code zu kennen, kann man nicht erraten, wieso der Autor selbst es für notwendig hält, dass der Code im Debug-Modus läuft. Ich persönlich würde jeden solchen Code garantiert löschen aund ihn unter keinen Umständen für wissenschaftliche Arbeiten verwenden.

Viele Grüße, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Tschanin
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 15.04.15
Wohnort: Regensburg
Version: ---
     Beitrag Verfasst am: 11.06.2015, 17:30     Titel:
  Antworten mit Zitat      
Hallo,

der Fehler lautet:"Undefined function or variable 'T'." und er tritt genau nach dem Kommentar mit den "weird variable names" auf.

Der Algorithmus ist von der Uni in Washington und es wurde auch ein Paper dazu veröffentlicht. Ist eig alles sehr wissenschaftlich gehalten. Er steht unter folgendem Link zum freien Download:
http://buffalo-lab.physiol.washington.edu/ClusterFix.html


Ich glaube der Autor will, dass man an besagter Stelle in der Funktion abbricht , damit nur Teilergebnisse ausgegeben werden. Aber selbst wenn ich den Breakpoint setze und dann auf [i]Step out[/i] klicke bringt er den Fehler, da ja T nach wie vor nicht definiert ist.

Ich denke, dass das schon alles seine Richtigkeit hat, nur dass ich sie eben nicht verstehe Sad Ist mit "run function in debug mode" gemeint, dass man einfach einen Breakpoint setzt und dann auf Run klickt oder gibts da einen bestimmten debug mode den ich nicht kenn?

Lg, Tschanin
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 13.06.2015, 00:54     Titel:
  Antworten mit Zitat      
Hallo Tschanin,

Die große Menge an MLint-Warnungen für den Code ist ein schlechtes Zeichen.
Die Art der Filterung der Signale ist merkwürdig (Zeile 238 bis 249 in ClusterFix_AnalysisCode): Erst "buffer" Frames vorne und hinten mit gespiegelten Signalen anfügen, dann ein Upsampling auf 1000Hz, danach ein FILTFILT und hinterher die ersten und letzten 100 Frames entfernen. Erstens kümmert sich FILTFILT bereits um die Signale an Anfang und Ende, zweitens ist auch "buffer" keine definierte Variable und deshalb wird die Matlab-Funktion "buffer" aufgerufen, so dass ein weiterer Fehler erscheint, falls Matlab bis zu dieser Stelle kommen würde. Dann einfach 100 Frames abzuschneiden, obwohl vorher eine variable Anzahl von Frames eingefügt wurde, kann Pseudo-Daten in den Signalen zurücklassen. Und nach dem RESAMPLE Befehl zu filtern kommt mir schräg vor.

Mir ist nicht klar, wie Du bis zur Zeile 209 kommst, wenn in der Zeile 161 bereits "buffer" verwendet wird, ohne dass es definiert wurde.

Zitat:
Ich denke, dass das schon alles seine Richtigkeit hat, nur dass ich sie eben nicht verstehe :( Ist mit "run function in debug mode" gemeint, dass man einfach einen Breakpoint setzt und dann auf Run klickt oder gibts da einen bestimmten debug mode den ich nicht kenn?

Ich denke, dass der Code deutlich verwurmt ist. Er ist unübersichtlich, erzeugt viele Warnungen, einfach zu vektorisierender Code ist als FOR-Schleife geschrieben, sehr viele Code-Abschnitte sind redundant und Unterfunktionen würden hier zu einer starken Vereinfachung führen. Es gibt keine magischen Debug-Modes, und wenn doch, wäre es keine wissenschaftlich zuverlässige Methode um Matlab zu benutzen.
Viele Kommentare sind praktisch unverständlich, z.B.:
Zitat:
% Since this is local re-evalution step can run this FOR loop (starting at
% line 137 and ending at 180) for each locally re-evaluated fixation

Klingt gut, aber in der Zeile 137 steht keine FOR-Schleife. Man kann also nicht mal erraten, was das bedeuten soll.
Auch der von Dir erwähnte Kommentar ist unverständlich.

Der Code ist wirklich schlecht und meiner Ansicht nach nicht benutzbar. Du scheinst auch Schwierigkeiten zu haben ihn zu verwenden. Mir ist zwar nicht klar, was Du mit "kompilieren" meinst, aber lauffähig oder nachvollziehbar ist der Code jedenfalls nicht. Einem Paper, das auf einem solchen Programm basiert, würde ich auf keinen Fall trauen. Ich wundere mich, dass das "Journal of Neuroscience Methods" dies angenommen hat.
Dass man dann für den Download auch noch seinen Namen und die email-Adresse angeben muss sowie das License-Agreement absegnen, kommt mir da schon etwas lächerlich vor.

Aber das war ja nun alles nicht Dein Problem. Du willst es ja einfach nur laufen lassen, was aber an der Fehlermeldung scheitert. Das Lesen des Codes legt nahe, dass es nicht an einer Fehl-Benutzung durch Dich scheitert, sondern der Code ist offenbar voller Bugs. Diese zu bereinigen wird wahrscheinlich wegen der niedrigen Qualität des Codes deutlich länger dauern, als es gerade ordentlich neu zu schreiben.
Deshalb würde ich Dir raten den Autor zu kontaktieren und nach lauffähigen Code zu fragen. Für eine ernsthafte wissenschaftliche Arbeit würde ich allerdings auf keinen Fall auf etwas in dieser Art zurückgreifen.

Gruß, Jan

PS. Sorry dafür, dass ich hier etwas weit ausgeholt habe. Ich habe mich schon so oft über Papers geärgert, die einen als Leser vollkommen im Regen stehen ließen, wenn man versuchte die Ergebnisse wirklich zu reproduzieren. Ich habe schon vielen schlechten Code gesehen, aber dieser ist ein heftiges Gefrickel. Ich finde das Veröffentlichen von Codes mit solchen Bugs peinlich. Leider programmieren viele Wissenschaftler nicht sauber, halten sich nicht an Richtlinien für Kommentare, sondern puzzeln einzelne Scripts zusammen, bis halt die Kurven herauskommen, die sie erwarten. Darum musste ich mal etwas emotionaler werden - auch wenn es Dir wohl kaum weiterhilft.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 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.