|
|
Laden von .mat-File aus Funktion |
|
elduderado |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.07.2010, 16:55
Titel: Laden von .mat-File aus Funktion
|
 |
Moinsen,
ich progge noch nicht lange in MatLab und hab ein ersten Problem, über das ich nicht hinweg komme. Wäre nett, wenn ihr mir helfen könntet:
Ich schreibe aus einer dll Datei ein .mat file heraus. Da dieser Vorgang ein bisschen dauert, habe ich einen Timer eingebaut, der nach 5 Sekunden die Fkt. "my_callback_fcn" aufruft. Dort möchte ich das .mat file gerne in den Workspace laden.
Doch leider funktioniert es nicht und ich bekomme eine Fehlermeldung, dass die Variable nicht deklariert ist - was auch Sinn macht. Lade ich das file vorher mit dem Wizard in den Workspace funktioniert alles.
Jetzt stellt sich mir die Frage, wie ich das .mat file in den Workspace aus einer meiner Sub Funktionen lade???
Es folgt der Fehler:
Ich habs auch schon mit:
probiert aber es funktioniert einfach nicht.
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 21.07.2010, 22:01
Titel: Re: Laden von .mat-File aus Funktion
|
 |
Dear Elduderado,
Du lädst das MAT File in den lokalen Workspace und versuchst es danach im Base-Workspace (also praktisch in der Kommandozeile!) auszuwerten. Versuche dies:
Gruß, Jan
|
|
|
elduderado |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.07.2010, 10:29
Titel:
|
 |
Moin Jan,
danke erstmal, aber dass hilft mir irgendwie nur bedingt weiter.
Sobald ich auf eine zweite struct zugreifen will, z.B.:
erkennt er die Struktur "B_stend" nicht. (In S bzw dem mat-file ist der incaName als auch B_stend, zeit2 und zeit3 drin)
Wenn ich das .mat file eingelesen habe im Skript und danach in der Matlab Cmd "who" eingebe, sollte er doch zumindest meine Struktur "S" als Variable anzeigen oder nicht? Das wundert mich halt, als wenn die auf einmal wieder aus dem workspace verschwindet.
Kann das etwas damit zu tun haben, dass ich das load in einer Fkt. drin hab, die aufgerufen wird? Und kann man nicht einfach das .mat file wie mit dem Wizard einfach direkt in den Workspace "ballern"?
MfG
Michael
|
|
|
elduderado_Guest |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.07.2010, 10:44
Titel:
|
 |
Ok, also ich hab ein teil des Problems gelöst
Dachte mir schon, dass es an der Syntax liegen muss, zumindest das aufrufen der struct.
Sehe ich es richtig, dass runde Klammern für eine struct zum Aufruf von dynamischen Variablen ist?! Ich habe für die festen Parameter wie "B_stend" die Klammern weggelassen und siehe es funktioniert !
Was ich aber immernoch nicht verstehe ist, warum S nicht als Variable im Workspace auftaucht (wenn ich alle Variablen mit "who" aufrufe)?
MfG
Michael
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 22.07.2010, 15:20
Titel:
|
 |
Hallo elduderado,
Wenn Du das LOAD Kommando innerhalb einer Funktion aufrufst, wird der Rückgabewert im Workspace der Funktion erzeugt, nicht im Base-Workspace der Kommando-Zeile. Das ist auch eine sehr gute Idee, weil es bei größer werdenden Programmen nicht überschaubar bliebe, womit man sich den Base-Workspace zu "ballert".
Es ist sehr anzuraten, sich schon bei kleinen Programmen anzugewöhnen, die Daten nicht kreuz und quer im Base-Workspace oder als GLOBALs zu verteilen, sonden sie ordentlich zwischen den verschiedenen Funktionen als Input und Output weiter zu geben. Ich habe schon zu viele Programme gesehen, die ab einem gewissen Punkt nicht mehr erweiterbar oder pflegbar sind, da sie als kleiner Hack gestartet wurden und danach jahrelang angestückelt wurde.
Viel Erfolg, Jan
|
|
|
elduderado_Guest |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.07.2010, 16:15
Titel:
|
 |
Danke Jan,
ich habe mittlerweile mein Problem erkannt. Da ich andersweitig einiges an Programmiererfahrung habe, bin ich mir deiner beschriebenen Problematik bewusst.
Für mein spezielles Problem war es aber sinnvoll, ein paar globale Parameter festzulegen.
Gruß
Michael
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 22.07.2010, 17:05
Titel:
|
 |
Hallo elduderado,
so geht es allen ProgrammiererInnen. Manchmal sind globale Variablen, EVAL, EVALIN, ASSIGNIN und eine Kommunikation zwischen Prozessen über Files einfach dreckig aber wirkungsvoll.
Ich wollte aber Anfänger, die dieses Forum lesen, davor warnen sich zu viel davon abschauen und sich damit das Programmieren schwerer zu machen, als nötig.
Gruß, Jan
|
|
|
|
|
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 - 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.
|
|