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

.csv-Datei importieren und in Matrix schreiben

 

mat1
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 16.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2008, 21:22     Titel: .csv-Datei importieren und in Matrix schreiben
  Antworten mit Zitat      
Hallo zusammen,

ich habe ein für Matlab-Kenner recht einfaches Problem. Auch wenn schon häufig ähnliche Fragen gestellt wurden, habe ich für mein Problem nicht die passende Antwort gefunden.

Ich habe ein .csv-File mit Messdaten, das ich in Matlab importieren möchte. Wenn ich mir das File in Excel anschaue, besteht das File nur aus einer Spalte (A) und mehreren tausend Zeilen, wobei jede Zeile bestimmte Daten komagetrennt beinhaltet.

Die ersten beiden Zeilen bestehen aus den (kommagetrennten) Kenngrößen und zugehörigen Einheiten, die restlichen Zeilen aus den (kommagetrennten) Werten, die aber nicht nur numerisch sind, sondern auch Zeichen wie z.B. / beim Datum beinhalten.

Hier als Beispiel die beiden ersten Zeilen und eine Zeile mit Werten:

Datum,Zeit,Spannung,Strom,Leistung
,[s],[V],[A][W]
10/07/2008,34.4,10.2,3.0,30.6

Ich möchte diese Daten einfach nur ohne Firlefanz in eine Matrix zur weiteren Verwendung einlesen, mehr nicht. Ich habe schon alle möglichen Befehle wie csvread (geht nicht, weil nicht nur num. Werte beinhaltet sind) oder dlmread und wie sie alle heißen ausprobiert und bin aber gescheitert (wahrscheinlich, weil ich sie nicht richtig angewendet habe).

Es wäre einfach sensationell, wenn mir da jemand helfen könnte. Vielen Dank schonmal im Vorraus.
Private Nachricht senden Benutzer-Profile anzeigen


Lim

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2008, 22:03     Titel: Re: .csv-Datei importieren und in Matrix schreiben
  Antworten mit Zitat      
mat1 hat Folgendes geschrieben:
Hallo zusammen,

ich habe ein für Matlab-Kenner recht einfaches Problem. Auch wenn schon häufig ähnliche Fragen gestellt wurden, habe ich für mein Problem nicht die passende Antwort gefunden.

Ich habe ein .csv-File mit Messdaten, das ich in Matlab importieren möchte. Wenn ich mir das File in Excel anschaue, besteht das File nur aus einer Spalte (A) und mehreren tausend Zeilen, wobei jede Zeile bestimmte Daten komagetrennt beinhaltet.

Die ersten beiden Zeilen bestehen aus den (kommagetrennten) Kenngrößen und zugehörigen Einheiten, die restlichen Zeilen aus den (kommagetrennten) Werten, die aber nicht nur numerisch sind, sondern auch Zeichen wie z.B. / beim Datum beinhalten.

Hier als Beispiel die beiden ersten Zeilen und eine Zeile mit Werten:

Datum,Zeit,Spannung,Strom,Leistung
,[s],[V],[A][W]
10/07/2008,34.4,10.2,3.0,30.6

Ich möchte diese Daten einfach nur ohne Firlefanz in eine Matrix zur weiteren Verwendung einlesen, mehr nicht. Ich habe schon alle möglichen Befehle wie csvread (geht nicht, weil nicht nur num. Werte beinhaltet sind) oder dlmread und wie sie alle heißen ausprobiert und bin aber gescheitert (wahrscheinlich, weil ich sie nicht richtig angewendet habe).

Es wäre einfach sensationell, wenn mir da jemand helfen könnte. Vielen Dank schonmal im Vorraus.


Hi,
habe gerade eben was zu txt2mat (herunterladen vom Matlab File Exchange) geschrieben...
Versuch einfach mal
A = txt2mat('c:\datei.txt');
könnte funktionieren...
Grüße
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 16.11.2008, 22:16     Titel:
  Antworten mit Zitat      
So müsste es auch funktionieren:
Code:

filetxt= ['datei']

file_2 = fopen(strcat(filetxt,'.txt'),'r');
A = textscan(file_2,'%f/%f/%f,%f,%f,%f,%f');
fclose(file_2);
 


Die Daten auslesen kannst du zum Beispiel mit

Code:

A{1,1}
A{1,2}
 


usw.

Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
mat1
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 16.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2008, 09:34     Titel:
  Antworten mit Zitat      
Hallo,

erstmal vielen Dank für die schnelle Hilfe. Habe versucht, das Problem nach Oli's Vorschlag zu lösen. Das Problem ist allerdings, dass es sich um eine .csv-Datei handelt, was ich dann auch im strcat-Befehl angegeben habe. Das läuft auch ohne Fehlermeldung, allerdings habe ich als Ergebnis für A ein 1x7 cell Array, das mir durch den gennenten Aufruf auch nichts liefert. Aber die Lösung ist glaub ich etwas näher gerückt. Für weitere Hilfe wäre ich Euch wirklich dankbar.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 17.11.2008, 13:19     Titel:
  Antworten mit Zitat      
Hallo mat1,

der Code war bloß für die Zahlen, die 2 Headerzeilen musst du auch noch rausnehmen am besten so:

Code:

A = textscan(file_2,'%f/%f/%f,%f,%f,%f,%f', 'headerLines',2);
 


Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
mat1
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 16.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2008, 20:25     Titel:
  Antworten mit Zitat      
Hallo Oli,

erstmal vielen Dank für die schnellen Antworten. Das Problem ist folgendes:

Die csv-Datei beinhaltet zwar zwei Headerzeilen, die ich rausnehmen kann. Die Zeilen darunter bestehen aber nicht nur aus richtigen Werten (s. Beispiel), sondern auch aus Sonderzeichen wie z.B / bei den Werten fürs Datum.

Hier nochmal das Beispiel:


1. Zeile: Datum,Uhrzeit,Spannung,Strom,Leistung
2. Zeile: [],[s],[V],[A][W]
3. Zeile: 10/07/2008,16:50:20,10.2,3.0,30.6
4. Zeile: 10/07/2008,16:50:21,10.2,3.0,30.6
usw.

Das bekomme ich einfach nicht hin. Vielleicht gibt es ja eine Möglichkeit, nur bestimmte "Spalten" (sind ja eigentlich nur kommagetrennte Spalten) auszulesen wie bei xlsread?
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 17.11.2008, 23:59     Titel:
  Antworten mit Zitat      
Ja, das %f steht für eine Zahl die eingelesen wird und die Zeichen dazwischen sind die Trennzeichen, die ignoriert werden sollen. In deinem Fall:
Code:

A = textscan(file_2,'%f/%f/%f,%f:%f:%f,%f,%f,%f', 'headerLines',2);
 


Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
mat1
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 16.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2008, 20:28     Titel:
  Antworten mit Zitat      
Hallo Oli,

vielen Dank nochmal für Deine Hilfe. Ich beginne zu verstehen! Das hört sich ja fast zu einfach an. Ich muss das mal ausprobieren...

Grüße
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.