|
|
Output erzeugen aus eingelesener Excel-Tabelle |
|
Friedolien |
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 13.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.04.2019, 12:00
Titel: Output erzeugen aus eingelesener Excel-Tabelle
|
|
|
|
|
Hallo,
bin etwas am verzweifeln und hoffe sehr mir kann jemand helfen
Zum Problem: Ich habe mir ein Skript geschrieben, welches Daten aus einer Excel-Tabelle, welche mit Zahlen und Buchstaben in unterschiedlichen Formen gefüllt ist (Kombi aus Buchstaben und Zahlen, nur Buchstaben, nur Zahlen), erstellt. Das klappt soweit auch ganz gut. Die einzelnen Variablen stehen, wie gewünscht, extrahiert in Form von Double-Vektoren, als Zeilenvektor (1x109 Dimension).
Da ich die Daten in eine andere Datei umwandeln möchte und die Reihenfolge ebenfalls ändern möchte, habe ich dafür den Befehl
verwendet. Dabei werden die Zeilenvektoren in Spaltenvektoren umgewandelt und nebeneinander angeordnet, in einer .csv Datei gespeichert und die Trennung der Spalten durch ein Leerzeichen durchgeführt. Soweit so gut. Das klappt alles wie es soll.
Mein Problem besteht nun darin, dass vor der "lat" Spalte noch mindestens 3 weitere eingefügt werden:
1. eine Spalte, die das Uhrzeit-Format der Excel-Tabelle (Mo 12:18:27) in das Format 12:18:27.00> für die .csv überführt
2. 2 weitere Spalten, die Zahlen und Buchstaben enthalten, wie "KL123" oder nur "addwpt"
Ich habe viel probiert, kriege es aber leider nicht zum laufen, dass in meinem Output die gewünschten Spalten hinzugefügt werden. Vermutlich stimmt das Format String-Double nicht überein, sodass die Spalten dem Vektor nicht hinzugefügt werden können. Ich bin leider auch ein Matlab-Anfänger und würde mich sehr über Hilfe freuen. Wenn weitere Informationen benötigt werden, schreibt mir bitte einfach.
P.S.: Hatte schon versucht die Spalten mit Text als "Cell" zu deklarieren, was dann zwar als Variable erstellbar war, jedoch ebenfalls nicht zum vorhandenen Output hinzugefügt werden konnte...
Viele Grüße
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.04.2019, 12:06
Titel:
|
|
Hallo,
wenn du die Daten als Table anlegst, kannst du
writetable
verwenden.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Friedolien |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 13.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.04.2019, 12:39
Titel:
|
|
Hallo,
vielen Dank Harald für den Tipp. Habe ich gleich versucht umzusetzen. Prinzipiell sieht das nicht schlecht aus. Allerdings habe ich noch 2 Probleme damit:
Wenn ich
verwende, werden mir in der .csv Datei dann vor und nach meiner Textspalte anstatt Leerzeichen Gänsefüße angezeigt, als "beliebiger Text"123 123 123.
Desweiteren wird durch die Tabelle zusätzlich ein Zeilenvektor in der .csv mit eingefügt, der dann die Spaltenbezeichnungen enthalten würde, was ich aber nicht möchte, weil dadurch eine zusätzliche Spalte in der Datei eingefügt wurde. Kann man das umgehen?
Sonst ist die Lösung gut.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.04.2019, 12:49
Titel:
|
|
Hallo,
um zu sagen, woher die " " kommen bzw. wie man sie verhindern kann, bräuchte ich ein reproduzierbares Beispiel. Vielleicht die Option QuoteStrings?
Zitat: |
Desweiteren wird durch die Tabelle zusätzlich ein Zeilenvektor in der .csv mit eingefügt, der dann die Spaltenbezeichnungen enthalten würde |
Option WriteVariableNames auf false setzen
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Friedolien |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 13.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.04.2019, 12:59
Titel:
|
|
Moin,
hammer. Das hätte ich nicht hinbekommen. Wirklich, tausend dank. Das hat mir richtig weitergeholfen
Danke und Grüße
|
|
|
Friedolien |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 13.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.04.2019, 14:54
Titel:
|
|
Eine Frage bleibt noch offen zum Problem 1:
Ich habe eine Cell mit 1x109 Dimension. In jedem Eintrag steht die Abkürzung für einen Wochentag und die dazugehörige Uhrezit. Also zum Beispiel 'Mo 12:18:27'.
Ich möchte gerne in meine Tabelle nur die Uhrzeit hinzufügen und die Wochentage "herauslöschen" Bin schon soweit gekommen, dass dies wohl die Funktion strsplit ermöglicht, allerdings habe ich es nicht hinbekommen das gewünschte Ergebnis zu erzielen. Schaffe es nur eine Cell zu erstellen, die wiederum in jedem Eintrag eine 1x2 Cell aufweist, wo der Wochentag und die Uhrzeit getrennt stehen.
Wie ist es möglich einen Vektor nur mit der Uhrzeit zu erstellen?
Grüße
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.04.2019, 15:35
Titel:
|
|
Hallo,
extractAfter
sollte helfen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Friedolien |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 13.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.04.2019, 15:42
Titel:
|
|
Vielen Dank. das hilft. Gibts eine andere Möglichkeit, die ohne Input auskommt, wonach "abgeschnitten" werden soll ("Mo") um das automatisiert auch für andere Wochentage zu ermöglichen?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.04.2019, 15:43
Titel:
|
|
Hallo,
du kannst bei extractAfter auch die Position angeben.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Friedolien |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 13.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.04.2019, 16:06
Titel:
|
|
aaah danke. Ist es möglich hinter jeden Uhrzeit Eintrag ein ">" Zeichen einzufügen, dies wird leider für meine Simulation an dieser Stelle immer noch benötigt.
P.S.: Habs: mit insertAfter
|
|
|
Friedolien |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 13.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.04.2019, 09:24
Titel:
|
|
Moin,
neues Problem, was noch zu dem obigen gehört:
Ich habe mir wie oben beschrieben in Tabellenform eine .csv Datei erstellt, die soweit auch top ist. Nun würde ich gerne über dieser eine neue Zeile einfügen, die allerdings eine Spalte weniger haben wird und auch eine andere Reihenfolge der in den Spalten stehenden Parameter enthält. Da ich vermute, dass das über die Tabelle nicht so ohne weiteres machbar ist, da eine Spalte weniger vorhanden ist, dachte ich mir, ich erstelle diese neue Zeile als neue .csv Datei. Gibt es nun eine Möglichkeit, diese der ersten hinzuzufügen und an die erste Stelle zu packen? Dabei muss die Zeile nicht direkt der anderen Tabelle angefügt sein und kann auch freie Zeilen enthalten.
Hoffe da kann mir jemand helfen
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 19.04.2019, 11:09
Titel:
|
|
Hallo,
eine Möglichkeit: beide Dateien mit fileread einlesen, die Zeichenketten aneinanderhängen und mit fprintf rausschreiben.
Ansonsten gibt es vielleicht auch Tools, Dateien aneinanderzuhängen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Friedolien |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 13.10.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.04.2019, 14:45
Titel:
|
|
|
|
|
Habs leider nicht lösen können. Einiges wieder probiert...
habe zuerst die Daten in zwei Tabellen schreiben lassen und diese dann jeweils in eine.csv Datei speichern lassen (_copy_test_scenario_CRE und ..._MOVE).
Anschließend via fileread in Matlab wieder einlesen lassen:
CRE beinhaltet ist dabei 9 Spalten und eine Zeile groß, MOVE 8 Spalten und 108 Zeilen.
Beide .cvs Files sollen nun in eine gespeichert werden, wobei _CRE die erste Zeile bilden soll. Habe folgendes probiert:
Dies erstellt eine Datei, wobei leider die erste Zeile der 2. Datei neben der Zeile der ersten Datei steht (wahrscheinlich durch strcat "verursacht", der für eine horizontale Verbindung sorgt, wie ich das verstehe) Deswegen wollte ich vertcat probieren, da ist dann aber ein Dimensionsfehler, da die Spalten beider Dateien gleich große sein müssen.
Jemand eine Idee, wie ich das lösen kann?
Edit.: Habs, habe both in eine celle via {}gemacht und dann dies bei fprintf auch angepasst. Das Ergebnis ist das gewünschte
|
|
|
|
|
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.
|
|