|
|
.mat Dateien nacheinander laden, bearbeiten und speichern |
|
FZS |

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 16.10.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.12.2010, 13:26
Titel: .mat Dateien nacheinander laden, bearbeiten und speichern
|
 |
Hallo,
ich habe Versuchsdaten, die jeweils als double mit gleicher Struktur vorliegen (16 Spalten, mehr als 1e7 Zeilen). Jeder array ist in einer eigenen .mat Datei gespeichert, die Dateien heißen so wie die jeweilige Variable.
Ich möchte das postprocessing automatisieren, so dass die arrays nacheinander geladen werden und dann verschiedene Operationen auf den array durchgeführt werden.
Das ganze mal an einem vereinfachten Beispiel, zuerst erzeuge ich mal die Daten:
jetzt möchte ich beispielsweise eine dritte Spalte einfügen als Summe der ersten beiden und schreibe dafür ein m-file. Aktuell sieht das so aus:
Als Fehlermeldung erhalte ich:
cell contents reference from a non-cell array object.
Wäre für einen kleinen Tipp bei diesem sicherlich einfachen Problem dankbar.
Gruß und ein frohes Fest,
Roman
|
|
|
|
|
FZS |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 16.10.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.12.2010, 22:38
Titel:
|
 |
ok, ich war vorhin nicht fit. vom Grundsatz hab ich es jetzt hinbekommen.
Unvollständig aber funktionierend:
|
|
|
FZS |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 16.10.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.12.2010, 22:38
Titel:
|
 |
Nach dem das Laden der Dateien so weit klappt, habe ich noch eine Frage zum Bearbeiten der Datensätze.
inputFileNames(1).name erhält in dem Beispiel den Wert
ans =
a1mat
Der Punkt als Trennung zwischen Dateinamen und Erweiterung ist durch ein anderes Zeichen (ein Viereck) ersetzt. Der load Befehl funktioniert trotzdem, aber ich habe Probleme, die Operationen auf die geöffneten Variablen anzuwenden. Fileparts funktioniert in dem Fall beispielsweise nicht.
Das Bearbeiten funktioniert so, das speichern noch nicht:
Die Fehlermeldung lautet: ??? eval(save a1)
|
Error: Unexpected MATLAB expression.
Wo liegt mein Fehler und gibt es einen besseren Weg, auf die so geladenen Variablen zu zu greifen?
Danke im Voraus,
Roman
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 29.12.2010, 00:13
Titel:
|
 |
Hallo,
du musst an eval einen String übergeben.
Wie du selber merkst, ist das Arbeiten so äußerst mühsam und sollte daher nach Möglichkeit vermieden werden, indem man z.B. mit Cell Arrays oder Structure Arrays arbeitet.
Grüße,
Harald
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 29.12.2010, 15:51
Titel:
|
 |
Hallo FZS,
Das Programm wäre weniger komplex und fehleranfällig, wenn die Ausgabe von LOAD nicht dynamisch eine Variable erzeugen würde, sondern die Ausgabe in einem Struct gespeichert würde:
Dann könntest Du per FIELDNAMES die Namen der Variablen erfragen und mit dynamischen Feldnamen auf die Daten zugreifen:
Damit hätte man sich den gesamten EVAL-Kram gespart. Das wäre einfacher zu debuggen, weniger fehleranfällig und würde zudem noch schneller laufen.
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.
|
|