Wenn er nur 1x1 struct ohne Feldnamen ausgespuckt hat funktioniert das mit dem Punkt schon mal nicht und da {} nicht gint bleibt nur noch (1).
Irgendwo habe ich das Problem schon mal gelöst...vielleicht find ich das noch...
Mit den Klammern geht es auch nicht. Ich hab schon soviel getippt und probiert, aber er greift einfach nicht drauf zu. Aber dann muss ich das jetzt einfach mal aussen vor lassen. Wird die Auswahl von *.mat-Files eben nicht ermöglicht, fertig
Hmm, also ich wüsste keine andere Variable, weil ich keine zuvor definiert habe.
Und, ich scheine schon wieder zu doof zu sein, wenn ich den whos Befehl nehme, um zu checken, was für Variablen ich habe, kommt:
Code:
??? Error using ==> whos
Could not open readData3.m as a valid MAT-file
Ich bin im richtigen Verzeichnis und meine Datei heißt so. Ich hab es auch schon ohne '.m' versucht (laut Hilfe geht das ja so), aber dann meckert er auch rum...
Ja, ich habe eine .m-File. Ich dachte, das wäre Standard, wenn man in Matlab Programme schreibt...
Und wie bekomme ich die Variablen raus, wenn es nun eine .m-File ist und whos anscheinend nur mit .mat funktioniert?
Okay, File funzt (das wusste ich ja). Aber ich besitze einfach keine Variablen Vermutlich weil das alles über die Dateiauswahl in der GUI läuft und ich keine Variablen vorher definiere.
Ich kann ja mal den Code zu dem dataread_Callback schreiben, darin werden die Daten ausgewählt und geöffnet.
Code:
function dataread_Callback(hObject,handles) [Dateiname, Dateipfad,fi]=uigetfile({'*.xls';'*.csv';'*.mat'},'File Selector');
Kannst Du bitte einfach nochmal zusammenfassen wo jetzt Dein Problem ist? Hast Du nun versucht ein *.m File über load einzulesen oder willst Du ein *.mat File über load einlesen? Willst Du Variablen aus dem *.mat File oder aus dem *.m File.
Wo sollen die Variablen den schließlich landen? Im MATLAB Workspace oder woanders.
Ich habe ein *.m-File als Programm, darin will ich über eine GUI ein *.mat-File einlesen. Das Einlesen an sich klappt, nur speichert er es eben als struct und ich kann auf die Spalten des Files nicht zugreifen. Die Daten, die in diesem Callback 'gespeichert' werden, sollen dann später durch andere Callbacks weiterverwendet werden.
Das ist das Problem.
Aber wie gesagt, ich werde es wohl einfach rauslassen müssen.
Du musst den oben genannten whos befehl mit dem MAT-File ausführen, nicht mit dem M-File dann gibt er dir die Namen der enthaltenen Variablen aus. dann musst du wie ich schon vor gefühlten 10 Nachrichten schrieb...
Du musst den oben genannten whos befehl mit dem MAT-File ausführen, nicht mit dem M-File dann gibt er dir die Namen der enthaltenen Variablen aus. dann musst du wie ich schon vor gefühlten 10 Nachrichten schrieb...
Ja, dit is klar Er schreibt mir dann mit whos nur den Namen der Datei, deren Größe,Bytes und Class (Attribute ist leer). Und dieser Befehl ist ja nur für mich, zur Überprüfung. Wenn ich da den Namen den er mir gibt, als 'NameDerVorhandenenVariable' einsetze, greift er darauf ja nicht zu, hatten wir ja alles schon.
Wie gesagt, ich lasse es ruhen, ich hab den ganzen Tag vertrödelt damit. Gibt sonst Mecker,wenn ich nicht voran komme
Vielen Dank nochmal!
daten = load(fullfile(Dateipfad,Dateiname));
% z.B du hast Variable data in Mat-File % dann wäre Zugriff so:
data= daten.data(:,10)
%
% mit fieldnames kannst direkt Strukturfelder abfragen
var_names =fieldnames(daten)
% du kannst auch dynamisch auf Felder zugreifen
data= daten.(var_names{1})(:,10)
Ich dachte,ich hatte das schon alles ausprobiert. Anscheinend nicht.
Also es klappt bei mir mit dem dynamischen Zugriff! Vielen Dank!
Der statische Zugriff (data = daten.data(:,10)) klappt bei mir nur, wenn ich direkt den Variablennamen eintippe. Da ich aber mehrere Files einlese, muss das dynamisch funktionieren. Da Dateiname bei mir gleichzeitig der Variablenname ist, hatte ich
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
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.