|
|
wie kann ich eine mat file laden??? |
|
xPashAx |
Forum-Guru
|
|
Beiträge: 294
|
|
|
|
Anmeldedatum: 18.05.09
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.04.2010, 11:08
Titel: wie kann ich eine mat file laden???
|
|
hallo leute,
hatte schon einen beitrag geschrieben, habe aber leider keine richtige antwort bekommen.
mein problem :
ich möchte mit einem button eine mat datei auswählen und laden damit ich es später verarbeiten kann.meine mat dateien heissen zB messung.202322_12334.meas.mat
diese mat dateien beinhalten geschwindigkeit,beschleunigung vektoren usw.
kann mir bitte jemand helfen
bei gui funktioniert das nicht
...und noch was.
nachdem ich die variablen wie geschwindigkeit,beschleunigung geladen habe, habe ich hier gelsen das man auf die nicht zugreifen kann. also vpm gui auf das workspace. was für ne lösung gibts denn da. denn ich will mein algorithmus in mein gui m-file einfügen.
|
|
|
|
|
michai |
Forum-Fortgeschrittener
|
|
Beiträge: 83
|
|
|
|
Anmeldedatum: 22.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.04.2010, 12:01
Titel:
|
|
Ok. Der erst Punkt ist das eval('caller'... Damit lädst du die Variablen in den Workspace der aufrufenden Funktion. Weißt du welche das ist, wenn du den Code in deiner Button-Callback aufrufst? und was dann damit passiert?
Um sicher zu sein, könntest du auch 'base' statt 'caller' nehmen. Dann weißt du sicher, wo alles landet, nämlich im Base-Workspace.
Allerdings würde ich dir davon abraten irgendwas in den base-Workspace zu packen!
Spar dir das eval() lieber ganz. Dann werden die Variablen zunächst in den Workspace deiner Callback geladen. Du kannst sie dann z.B. mit Hilfe der Funktion guidata (siehe >> doc guidata) über deine Funktionsgrenzen hinaus "retten" und in anderen Funktionen zugänglich machen oder auch direkt verarbeiten.
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 28.04.2010, 12:02
Titel:
|
|
Hallo
1)Das Laden geht über LOAD-Befehl
EVALIN ist dabei nicht nötig
2) Damit du Variablen in anderen Teilen benutzen kannst, sollst du diese Zwischenspeichern, das kann man z.B mit GUIDATA über handles -Struktur machen, oder über SETAPPDATA/ GETAPPDATA eigene Variable definieren
|
|
|
xPashAx |
Themenstarter
Forum-Guru
|
|
Beiträge: 294
|
|
|
|
Anmeldedatum: 18.05.09
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.04.2010, 12:07
Titel:
|
|
wenn ich anstatt 'caller' 'base' schreibe dann funktioniert es.danke. was war denn der unterschied?
sollte ich jetzt lieber im workspace nichts laden? aber ich will doch die variablen in meinem algo ja verwenden. was für ne alternative gibts denn noch?
ich bedank mich schon vorraus
|
|
|
michai |
Forum-Fortgeschrittener
|
|
Beiträge: 83
|
|
|
|
Anmeldedatum: 22.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.04.2010, 12:55
Titel:
|
|
|
|
|
Bei 'base' wird im Base-Workspace gespeichert, also in dem Workspace, den du in deinem Matlab-Fenster siehst.
Bei Funktionsaufrufen ist das so, dass jede Funktion ihren eigenen Workspace hat. Also wenn du da eine Variable anlegst, ist sie NICHT im Base-Workspace sichtbar und wird auch wieder gelöscht, wenn die Funktion beendet wird.
Das gilt auch für Unterfunktionen, also wenn du in einer Funktion eine weitere Funktion aufrufst, sehen die beiden nur ihren jeweils eigenen Workspace. Ein Zugriff auf Variablen, die in der anderen Funktion angelegt wurden ist nicht möglich.
Mit eval() weichst du diese Kapselung auf und kannst über die Funktionsgrenzen hinweg auf andere Workspaces zugreifen. Und 'base' ist eben dein Base-Workspace.
Wenn du eval('caller'...) aufrufst, bezieht es sich auf den Workspace der aufrufenden Funktion also etwa so (Achtung Pseudocode):
Diese Kapselung macht aber schon Sinn, denn du weißt nicht immer sicher, ob nicht vielleicht noch eine andere Funktion eine Variable mit dem gleichen Namen im Base-Workspace abgelegt hat und du die damit ausversehen überschreibst und 'caller' macht auch nur Sinn, wenn die aufrufende Funktion deine eigene ist. Denn sonst sind die Variablen ja auch wieder weg, sobald diese aufrufende Funktion beedet wird.
Wenn du einfach sagst load(fullfile(fpath,fname)) werden die Daten zunächst nur im Funktionsworkspace abgelegt. Um sie vor dem Löschen bei Funktionsende zu bewahren kannst du sie z.B. mit Hilfe der Funktion guidata "in" deiner GUI abspeichern und zu einem späteren Zeipunkt einfach wieder auslesen und weiterbenutzen bzw. -verarbeiten.
Schau dir mal denny's Lösung an. Er hat schon geschrieben, wie man's macht: Mit Hilfe der guidata Funktion.
|
|
|
xPashAx |
Themenstarter
Forum-Guru
|
|
Beiträge: 294
|
|
|
|
Anmeldedatum: 18.05.09
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.04.2010, 12:56
Titel:
|
|
es gibt also den tatsächlichen workspace da wo wir die variablen sehen und einen workspace für gui. habe ich das richtig verstanden? kann man den inhalt vom gui workspace nicht sehen?
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 28.04.2010, 13:20
Titel:
|
|
xPashAx hat Folgendes geschrieben: |
es gibt also den tatsächlichen workspace da wo wir die variablen sehen und einen workspace für gui. habe ich das richtig verstanden? kann man den inhalt vom gui workspace nicht sehen? |
Es gibt nicht speziell GUI Workspace, jede Funktion hat eigenen Space.
Jede Funktion reserviert Platz in Speicher um eigene Variablen anzulegen/ Berechnungen durchzuführen. Diese Variablen nennt man lokale Variablen.
Weil sie sind außerhalb dieser Funktion für andere Funktionen nicht sichtbar.
Und nur den Lebensdauer ihrer Funktion besitzen.
|
|
|
xPashAx |
Themenstarter
Forum-Guru
|
|
Beiträge: 294
|
|
|
|
Anmeldedatum: 18.05.09
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.04.2010, 13:52
Titel:
|
|
vielen dank
|
|
|
xPashAx |
Themenstarter
Forum-Guru
|
|
Beiträge: 294
|
|
|
|
Anmeldedatum: 18.05.09
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.04.2010, 19:09
Titel:
|
|
ihr seid super, dank euch hab ich wieder vieles gelernt.
denny ich hab deine lösung aufgeschrieben und es hat geklappt.
so jetzt will ich mit einem 2. button ja meine daten verarbeiten mit for schleife usw.
sooo und sehe tatsächlich meinen vektor geschwindigkeit.
mein problem ist ich habe schon ein m file geschrieben wo die daten verarbeitet werden.
muss ich da jetzt vor jedes signal wie beschleunigung das handles.myvar dranhängen (handles.myvar.beschleunigung). dann muss ich ja in meinem m-file an jedes variabel das handles.myvar dranhängen. gibts da ne einfachere lösung so das ich nur mit copy paste in das pusbutton2 einfüge.
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 28.04.2010, 19:54
Titel:
|
|
Muss Du nicht du kannst am Anfang der Funktion
die Werte an Lokale Variablen übergeben.
|
|
|
xPashAx |
Themenstarter
Forum-Guru
|
|
Beiträge: 294
|
|
|
|
Anmeldedatum: 18.05.09
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.04.2010, 06:55
Titel:
|
|
ok das ist jetzt auch klar.
danke denny
und wenn ich 30 signale habe. muss ich die dann einzeln eintippen oder gibt es auch ein befehl der das automatisiert durchführt.
geschwindigkeit = handles.myvar.geschwindigkeit;
beschleunigung = handles.myvar.beschleunigung;
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 29.04.2010, 08:48
Titel:
|
|
Hallo
nicht wirklich ,aber du kannst dafür so ein Konstrukt nutzen
|
|
|
xPashAx |
Themenstarter
Forum-Guru
|
|
Beiträge: 294
|
|
|
|
Anmeldedatum: 18.05.09
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.04.2010, 11:27
Titel:
|
|
noch ne frage denny.
nachm betätigen des buttons läuft ja mein algo und während des algos werden ergebnisse als x,y,z....da werden schon viele vektoren als ergebniss gespeichert.
diese ergebnisse werde ich aber wieder später brauchen. wie kann ich die denn seperat speichern und wieder aufrufen?
du hattest ja die variablen als handles.myvar gespeichert und nun jetzt ?
die anderen vllt so handles.anderevar ?
super wäre natürlich wenn ich die ergebnisse meines algos komplett speicher.
ich bedank mich schon vorraus.
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 29.04.2010, 12:26
Titel:
|
|
Hallo,
natürlich kannst du diese wieder in deiner handles-Struktur abspeichern.
|
|
|
xPashAx |
Themenstarter
Forum-Guru
|
|
Beiträge: 294
|
|
|
|
Anmeldedatum: 18.05.09
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.04.2010, 12:53
Titel:
|
|
|
|
|
Gehe zu Seite 1, 2, 3 Weiter
|
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.
|
|