seit geraumer zeit hänge ich an einem häufig wiederkehrendem problem und würde gerne wissen ob man dies besser/effizienter lösen könnte. Zu meinem Problem:
Ich lese eine unbekannte Anzahl von Dateien mittels importdata ein.
Ich habe dann ein struct-array 'mystruct' der größe (x,1) mit jeweils 2 Feldern. Wobei ein Feld Skalare sind (ausschließlich double-Werte von Messdaten = data) und das andere Feld sind Zeitstempel (textdata als cell). Ich habe also letztlich so etwas:
Jetzt möchte ich die Zeitstempel auswerten des ganzen arrays (also jedes structs) und will darauf die function datenum anwenden: Ich dachte zuerst an so etwas:
Hierbei will ich ALLE structs untersuchen und somit jedes Feld textdata (dieses feld hat den typ "cell"). Im Feld textdata (größe: (y,1)) möchte ich aber lediglich nur die zeilen von bsp. {2:end,1} wie in obigem Beispiel ersichtlich. Die Einträge der Felder von textdata sind letztlich vom typ char und haben alle das Format ''dd.mm.yyyy HH:MM:SS'. Ich möchte aber zunächst nur 'dd.mm.yyyy' siehe oben.
Der Aufruf wie oben gezeigt funktioniert so nicht, da die cell indizierung so in matlab nicht möglich ist wie ich schon an anderer stelle gelesen habe. So eben bin ich auf die function structfun gestoßen mit der ich auch nicht so recht klar komme. Ich habe folgendes probiert:
Funktioniert so leider auch nicht, blicke auch nicht so ganz durch wie das mit den function handles etc. anwenden muss. Die hilfe hilft mir in dem Fall auch nicht weiter..
Bisher hab ich soetwas immer mit neuen variablen und For-Schleifen etc. gelöst...aber ich bin der meinung, dass das doch auch effizienter/einfacher gehen sollte?
Bis hierhin gehts wobei beim letzten Struct welches eingelesen wird, eine cell entsteht welche die größe der beiden structfelder hat. Der Inhalt der ersten Spalte wird zwar richtig übernommen anschließend aber auch noch der Header der nächsten Spalte und ab dann nur noch Leerfelder (?). Woher kommt das denn?
Zumindest wollte ich den Rest deines Codes ausprobieren und habe die cell textdata dann händisch auf die richtige größe "gestutzt".
Bei
immer ein Cell-array erstellt welches die größe beider struct-felder hat und nach dem inhalt der ersten Spalte noch den header der zweiten spalte mit kopiert und dann nur noch leere felder hat.
kannst zur Verständnis Inhalt so einer Cell posten?
Kerstin87
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 24.09.2012, 09:41
Titel:
hee denny,
vielen Dank für deine Bemühungen. Ich habe das nach einigem herumprobieren mittlerweile selbst gelöst bekommen.
Hier der code für diejenigen die es interessiert:
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.