Verfasst am: 04.05.2017, 13:06
Titel: Berechnete Daten aus Matlab in .csv Datei schreiben
Hallo Forum.
Ich habe ein konkretes Problem. Ich bin mir ziemlich Sicher das man das mit Matlab lösen kann, es stellt mich als Neuling aktuell aber vor eine große Herausforderung.
Folgende Ausgangslage: Ich habe Daten berechnet. In diesem Beispiel liegen diese in einer Variable mit der Form 3x6double (zukünftig aber gerne in nx6double).
Ziel: Die Daten automatisch mit einer bestimmten Syntax in eine csv Tabelle speichern.
Beschreibung:
Aktuell liegt meine Variable mit dem Namen "a1test" in folgender Form vor:
Mein Ziel ist es jetzt, diese Daten in folgendes .csv Muster zu kopieren:
Dabei möchte ich die Daten nur in die Gelb markierten Zellen schreiben, der Rest soll immer gleich bleiben. Und zwar soll nun der erste Zeilenvektor der Datenvariable in der .csv Datei als Spaltenvektor eingetragen werden. Erschwerend kommt hinzu, das der erste Wert in der csv Datei in die "H-Spalte", der zweite bis vierte in die "G-Spalte", der fünfte in die "H-Spalte" und der letzte und sechste wieder in die "G-Spalte" kommt.
Weitere Problemstellungen die ich sehe, aber nicht umzusetzen weiß:
- In der csv-Datei befindet sich der Datentyp string und double
- Das Dezimaltrennzeichen soll der Punkt sein
- Falls meine Datenvariable mal länger ist, würde ich dies am liebsten mit einer Variable n (also Datentyp nx6) anpassen können.
Wenn mir das jemand helfen könnte komm ich persönlich vorbei undund gebe ihm ein Kaltgetränk aus . So viel Zeit sollte ich tatsächlich dabei gewinnen, dass nicht immer händisch auszufüllen.
Nur um zu zeigen, dass ich mir auch schon ein paar (nicht gut funktionierende) Gedanken gemacht habe, aber für jemanden der es richtig beherrscht wahrscheinlich nutzlos sind:
am einfachsten dürfte es sein, wenn du die komplette Datei (außer 1. Zeile) als Table einliest (
readtable
), in MATLAB die Änderungen vornimmst, und dann wieder als Table rausschreibst (
writetable
).
Das klingt schon mal ganz gut. Könnte ich auch eine Art Vorlage erstellen?
Das Problem ist: In der .csv Datei ist ja zu sehen, dass es verschiedene "point on time" (Zeile B) gibt. Diese ist eigentlich gleich mit der Weite meiner Datenvariable. Also hier 3x6, also auch "point in time" 1 bis 3. Wofür ein "point on time" aus 6 Zeilen besteht.
Gerne würde ich vielleicht also ein Muster einlesen, mit einem "point on time", und dann beliebig um n Schritte erweitern.
1) Die Schleife um die ID aus der Vorlage kopieren klappt gut. Die Schleife für "point in time" klappt leider nicht. Ich bekomme immer die Fehlermeldung:
Zitat:
Right hand side of an assignment into a table must be another table or a cell array.
2) Beim versuch die Daten wieder in eine .csv zu schreiben, erhalte ich folgendes:
Alles Daten einer Reihe stehen also in einer Zelle. Wie erhalte ich mein gewünschtes Anfangsmuster?
Wenn Dateien nicht angehängt werden können, bitte zippen. Der kleine Unterschied zwischen .txt und .csv kann schnell mal zu einem anderen Verhalten führen.
Grüße,
Harald
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.