WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Fehlerhaftes Einlesen CSV

 

FelixW
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2021, 11:02     Titel: Fehlerhaftes Einlesen CSV
  Antworten mit Zitat      
Hallo zusammen,
ich lese 18 verschiedene .csv-Dateien ein. In der Ursprungsdatei ist der code aus dem zip-Ordner in einer Funktion hinterlegt, was aber hier unerheblich ist. In allen csv stehen ab der 2 Spalte Werte (Temperaturen, Drücke....) die als double eingelesen werden sollen. Das funktioniert für 17 der 18 csv Dateien auch problemlos (so z.B. auch für 20210921_temp1), alleine für die csv 20210921_temp2 werden die Daten als cell abgelegt? Ich finde aber keinen Unterschied in der .csv.

In dem Zip-Ordner sollte alles abliegen um meine Problemstellung nachvollziehen zu können.

Viele Grüße

Felix

_Einlesen_test.zip
 Beschreibung:

Download
 Dateiname:  _Einlesen_test.zip
 Dateigröße:  272.82 KB
 Heruntergeladen:  234 mal
Private Nachricht senden Benutzer-Profile anzeigen


aemon
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 26.10.17
Wohnort: Niedersachsen
Version: R2019a / R2021a
     Beitrag Verfasst am: 14.10.2021, 11:30     Titel:
  Antworten mit Zitat      
Hallo,
es gibt einen entscheidenden Unterschied:
In temp1 sehen die Werte in de csv z.B so aus: 49.28434;48.23756;
In temp2 hingegen so: 5.919.995;8.126.953

Sprich es gibt 1000er-Trennzeichen die als Dezimaltrennzeichen interpretiert werden. Es darf aber nur 1 Dezimaltrennzeichen je Zahl geben.

Viele Grüße
Aemon
Private Nachricht senden Benutzer-Profile anzeigen
 
FelixW
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2021, 12:20     Titel:
  Antworten mit Zitat      
Okay, das Problem hätte ich gelöst, danke.
Jetzt ergibt sich gleich ein neues. Im angehängten Ordner ist das Beispiel.
Die csv hat aktuell 15 Spalten mit Werten (inkl. der Uhrzeit), aber 16 Überschriften. Das führt dazu, dass beim Einlesen die Überschriften nicht als solche erkannt werden. Meine Kollegen würden diesen "Platzhalter" gerne für spätere Auswertungen in den csv belassen. Besteht eine Möglichkeit den readtimetable-Befehl so zu konfigurieren, dass er die Überschriften trotzdem übernimmt? Im Optimalfall so, dass er die 16-Spalte ebenfalls einliest, sollte sie später mit Inhalt gefüllt werden.


Viele Grüße

_Einlesen_test (2).zip
 Beschreibung:

Download
 Dateiname:  _Einlesen_test (2).zip
 Dateigröße:  131.91 KB
 Heruntergeladen:  229 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
aemon
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 26.10.17
Wohnort: Niedersachsen
Version: R2019a / R2021a
     Beitrag Verfasst am: 14.10.2021, 13:40     Titel:
  Antworten mit Zitat      
Die Definition der ersten Zeile als Variablennamen funktioniert bei mir.
Andernfalls könnte man die Variablennamen natürlich auch selber auslesen/setzen.

Code:
opts = detectImportOptions("_Einlesen_test\20210922.csv");
opts = setvartype(opts, 1, "datetime");
opts = setvaropts(opts, 1, "InputFormat","yyyy-MM-dd-HH:mm:ss.SSS");
opts.VariableNamesLine=1;
data1 = readtable("_Einlesen_test\20210922.csv", opts);
Private Nachricht senden Benutzer-Profile anzeigen
 
FelixW
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.10.2021, 09:22     Titel:
  Antworten mit Zitat      
Und nochmal Danke!
Mein Fehler war der folgende:
In der CSV gibt es, wie beschrieben, eine Überschrift mehr als Spalten mit Daten. Zeitnah soll diese aber mit Daten gefüllt werden, eine Programmierung, die diese Spalte explizit ignoriert oder auslässt ist also wenig sinnvoll. Auch ein separates Einlesen der Variablen Namen wollte ich vermeiden, die Zuordnung soll immer unmittelbar aus den Quellen erfolgen. Um mein Programm zu testen hatte ich nun entweder die Überschrift gelöscht, oder die Spalte in Excel mit Inhalt gefüllt. In beiden Fällen zerschoss mir das anschließende beim Speichern die Dezimaltrennzeichen. Dummerweise habe ich mir die CSV erst nach deinem Hinweis im Editor angeschaut. Nur kurz das Dezimaltrennzeichen in Excel auf den "Punkt" gestellt und alles läuft reibungslos...
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.