Hallo und Hilfe, verzweifle grad..... der Plan lautet:
*.mat Datei einlesen - alle Daten in der Variablen dataContent speichern - ausgewählte File anzeigen lassen....
...klappt...
jetzt.... field names viel zu lang und von der Syntax etwa so
asd/fgh/hjk/klo/etwa
Ich möchte die Namen ändern...und zwar mir NUR die beiden letzten Stücke anzeigen lassen.
Versuche es mit regexp und bekomme den Namen auch aufgesplittet, aber raffe nicht wie ich mir nun die letzten beiden als neuen Namen anzeigen lassen kann....
Die mat.Dateien sind in ihrer Größe variabel und die Namen haben auch nicht immer dieselbe Anzahl von Slashes im Namen...
Die Namen möchte ich mir im Übrigen in einer Liste in meiner ui ausgeben lassen....
Hilfe??? .....bitte....?!
CodeSchnipsel siehe hier: (comments unwichtig)
Code:
[FileName,PathName] = uigetfile({'*.mat'; '*.*'},'Select the MATLAB code file');
if(FileName==0) %cancel is pressed
return;
end
%# umschreiben in allgemeine structVariable dataContent
dataImport = load(fullfile(PathName,FileName)); %# pass file path as string
Structname = fieldnames(dataImport); %# in cell array werden die field Namen von data import gespeichert
dataContent = dataImport.(Structname{1}); %# in data content wird nun der inhalt des structes bezüglich seines field Namens gespeichert!
ShowFileString = [PathName FileName]; %path and name
set(strctHndl.FileEdit,'String',ShowFileString) %shows directory string
so, okay.....hab da ne Lösung....ist vielleicht nicht ganz so schön, aber geht....:
Code:
%# select variable name from cell array field name
A = cellstr(dataContent.Y(1,1).Name);
B = regexp(A,'"/"','split'); %# A ist ein Cell-string...aufsplitten in einzelne strings, Trennung bei /
.....hat vielleicht jemand einen Tip für mich wie ich das in einer Schleige realisiere, um das für alle fieldNames durchzuführen? Und in welchem DateiTyp sind die dann gespeichert.......
und kann ich mit den Namen auch noch auf die dazugehörigen Daten aus der mat-Datei zugreifen??
Du brauchst nicht die Länge des Cell zu kennen, den letzen Eintrag kannst mit "end"-Schlüsselwort erfragen
so vielleicht:
Code:
%# select variable name from cell array field name
A = cellstr(dataContent.Y(1,1).Name);
B = regexp(A,'"/"','split'); %# A ist ein Cell-string...aufsplitten in einzelne strings, Trennung bei /
ahhh....vielen Dank.... das ist tatsächlich schöner!
Es funzt jetzt auch.....heißt ich schreibe mir gerade in einer for-Schleife ein 1x11 cell array mit meinen eigentlich gewollen Variablen-Namen rein....
Wenn ich nur jetzt versuche die Daten darauf zu schreiben, überschreibe ich andauernd den String mit den Daten....
Kann mir irgendjemand sagen, wie ich die 11 VariablenNamen (Strings im CellArray) jetzt in meine List-Box bekomme und ihnen bestenfalls auch noch x und y Werte zuweise damit ich mir den Schmarrn auswählen un plotten kann?!
Komm mir irgendwie grad echt blöd vor.....hab nicht mal ne Idee......und mathworks und der ganze Rest hilft auch iwie nicht weiter....
hier noch mal, was ich gerade tue....
Code:
%# Zuweisung von den VariablenNamen aus den fields der Daten der *.mat-Datei
c = cell(1,length(dataContent.Y));
for j = (1:length(dataContent.Y)) %# Anzahl der Varieblen (fields) in der *.mat-Datei
A(j) = cellstr(dataContent.Y(1,j).Name);
B(j) = regexp(A(j),'"/"','split'); %# A ist ein Cell-string...aufsplitten in einzelne strings, Trennung bei /
a = B{1,j}{1,end-1};
b = B{1,j}{1,end};
c{j} = strcat(a,'/',b);
variableName{j} = regexprep(c{j},'"','');
end
Kann mir irgendjemand sagen, wie ich die 11 VariablenNamen (Strings im CellArray) jetzt in meine List-Box bekomme und ihnen bestenfalls auch noch x und y Werte zuweise damit ich mir den Schmarrn auswählen un plotten kann?!
Deine Fragen/ Problembeschreibung ist nicht klar, es ist immer gut anhand eines einfachen Beispiels das Problem zu beschreiben. Man sollte immer das Problem auf das Minimum reduzieren (auf mehrere Teilprobleme), dann wird auch etwas komplexes einfacher zu lösen.
PS: ich habe hier den Callback in einer Zeile gemacht, mach es bei dir besser in einer Funktion
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
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.