Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

CSV-Datei auslesen mit Komma-Problem

 

sawyer_ma
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 14.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2018, 02:07     Titel: CSV-Datei auslesen mit Komma-Problem
  Antworten mit Zitat      
Hallo liebe Matlab Gemeinde,

viele Gerätehersteller finden es spannend, Messdaten so abzuspeichern das der Anwender diese nicht einfach auslesen kann. So auch mal wieder ein neuer Fall bei dem ich absolut überfordert bin. Die CSV-Datei habe ich euch angehangen.

Das Format befindet sich alles in einer Spalte und sieht wie folgt aus:

ED-WDM Wavelength Scan
26.10.18 17:18


Wavelength(nm),Upper channel power(dBm), Lower channel power (dBm)
1549,890,-3,980,-28,230
1549,910,-3,970,-31,680
1549,930,-4,410,-16,730
usw.

Ich bekomme mit dem Code:

Code:

clear all;
clc;

daten=importdata('Messung 4.8.1.csv‘, ',')
 


auch ein 1x1 struct mit 2 Feldern heraus jedoch trennt Matlab wie verlangt immer nach den Komata. Jetzt habe ich mir überlegt das es nur die Möglichkeit gibt immer nach einem Komma auf 3 zu Zählen (da immer drei Nachkommastelle) und ab da das Komma als neue Spalte zu interpretieren. Jedoch weis ich nicht wie ich das umsetzen kann und bitte euch um Hilfe.

Geht sowas den?

P.s: Die Originaldatei hatte die Endung csv die ich auf txt änderte um diese anzuhängen.

Beste Grüße
Stephan

Messung 4.8.1.txt
 Beschreibung:
Messdaten

Download
 Dateiname:  Messung 4.8.1.txt
 Dateigröße:  637 Bytes
 Heruntergeladen:  37 mal
Private Nachricht senden Benutzer-Profile anzeigen


sawyer_ma
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 14.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2018, 18:13     Titel:
  Antworten mit Zitat      
Hat mir jemand villt einen kleinen Hinweis wie ich das am besten lösen kann?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 20.084
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 29.10.2018, 18:43     Titel:
  Antworten mit Zitat      
Hallo,

Code:
num = daten.data;
vals = num(:,1:2:end) + sign(num(:,1:2:end)).*num(:, 2:2:end)/1000;


Falls nicht sichergestellt ist, dass immer genau 3 Nachkommastellen da sind, muss man noch dran drehen.

Grüße,
Harald


P.S. Bitte min. 24 Stunden Geduld, bis du Beiträge pushst.
_________________

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
sawyer_ma
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 14.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2018, 19:27     Titel:
  Antworten mit Zitat      
Entschuldigung, ich wollte nicht aufdringlich sein.

Vielen Dank für deine Lösung, diese funktioniert super. Eine winzige Frage habe ich aber noch:
Ich möchte alle Dateien auslesen im dir Verzeichnis und diese nacheinander Plotten. Es funktioniert auch soweit bis auf den Abschnitt:

daten= importdata('Messung 4.8.1.txt')

Da müsste ich noch den Parameter d(i) mit hinein bekommen zum wechseln der Datei. Leider funktioniert dies nicht. Des Weiteren heisen die Dateien alle anders, das sollte einfach unberücksichtigt sein da alle geplottet werden sollen. Erst in im Plot wollte ich den Dateinamen beifügen um die Plots auseinander zu halten.

Code:

clear all;
clc;

files  = dir('*.txt');
Anztxt = length(files);
names   = {files.name};


for i=1:Anztxt
   
    filename = string(names(:,i))
   
    daten = importdata('Messung 4.8.1.txt');
    num   = daten.data;
    vals  = num(:,1:2:end) + sign(num(:,1:2:end)).*num(:, 2:2:end)/1000;

    figure('NumberTitle','off','Name', num2str(filename))
    hold on;
    grid on
    plot((vals(:,1)),(vals(:,2)),'b'); %upper
    plot((vals(:,1)),(vals(:,3)),'r'); %lower
    xlabel('Power(dBm)');
    ylabel('Wavelength(nm)');
    legend('Upper channel','Lower channel','Location','south');
   

end
 


Beste Grüße und vielen Dank nochmals

Zuletzt bearbeitet von sawyer_ma am 29.10.2018, 20:18, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 20.084
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 29.10.2018, 20:00     Titel:
  Antworten mit Zitat      
Hallo,

bitte immer schreiben, was du genau versucht hast und welche Probleme dabei aufgetreten sind.

Vorschläge:
Code:
daten= importdata(d(i).name, ',')

und
Code:


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 ;)
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2019 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.