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

Einlesen und darstellen mehrerer .csv-files gleichzeitig

 

marsss
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2016, 16:35     Titel: Einlesen und darstellen mehrerer .csv-files gleichzeitig
  Antworten mit Zitat      
Hallo zusammen, Smile

ich schreibe momentan an einem Projekt, dass sich mit auslesen und darstellen von .csv-files beschäftigt. Momentan habe ich es geschafft, mit Hilfe einer while-Schleife, jedes einzelne nacheinander einzulesen und plotten. Man muss dazu erwähnen, dass die .csv-Dateien 9 Spalten besitzen.
Allerdings würde ich gerne nur die erste Spalte jeder .csv-Datei in einem Plot darstellen.

Um euch ein bisschen zu zeigen was ich gemacht habe:

Code:
my_path = uigetdir('','Bitte Datensatz-Ordner auswählen'); %Ordner wählen
    dirData = dir([my_path,'/*.csv']) ;     % Get the filetype-data for the directory
    fileList = {dirData.name};
       
    fileList = cellfun(@(x) fullfile(my_path,x),...  %# Prepend path to files
                      fileList,'UniformOutput',false);
    Segment_data=[ ];
    for i_structgen = 1:length(fileList)
        Segment_data(i_structgen).Filename=fileList{i_structgen};

i_struct=0; %loop-variable


while 1 %while-loop because of repeatings: not possible in for-loop!!
   
    i_struct=i_struct+1;
myMatrix = csvfiles_einlesen_v3(char(Segment_data(i_struct).Filename));
%csv files laden
 myMatrix = table2array(myMatrix);
.
.
.
end  
     


Ich erstelle zuerst eine Liste aller Dateien die in einem bestimmten Ordner enthalten sind.
Die Liste wird dann in der while-Schleife einzeln abgearbeitet und später dargestellt. Hierfür wird zuerst in csvfiles_einlesen_v3 die Datei ausgelesen und als table abgelegt, um sie dann später einfacher plotten zu können.

die Funktion csvfiles_einlesen_v3 findet ihr hier:

Code:
function  myTable= csvfiles_einlesen_v3(filename, startRow, endRow)

delimiter = ';';
if nargin<=2
    startRow = 3;
    endRow = inf;
end

formatSpec = '%f%f%f%f%f%f%f%f%f%[^\n\r]';


fileID = fopen(filename,'r');

  dataArray = textscan(fileID, formatSpec, endRow(1)-startRow(1)+1, 'Delimiter', delimiter, 'HeaderLines', startRow(1)-1, 'ReturnOnError', false);

end

fclose(fileID);


myTable = table(dataArray{1:end-1}, 'VariableNames', {'AccelX','AccelY','AccelZ','GyroX','GyroY','GyroZ','MagX','MagY','MagZ'});
 


Wie oben schon erwähnt würde ich nun gern alle gleichzeitig Dateien einlesen und in einem Plot darstellen.
Meine Idee war es, das ganze mit einer for-schleife zu lösen, die das Array "myMatrix" füllt. Allerdings habe ich leider nicht bedacht bzw. habe das Problem, dass Sie natürlich immer wieder von der nächsten Datei überschrieben wird.

Hättet Ihr , falls Ihr mein Problem verstanden habt Wink , eine Idee oder Anregung mit der ich das Überschreiben umgehen kann und dann eventuell alle Dateien gleichzeitig in einem Plot darstellen kann.

Vielen Danke an die, die sich die Mühe machen würden mir ein bisschen zu helfen Very Happy

marsss
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.05.2016, 19:20     Titel:
  Antworten mit Zitat      
Hallo,

du schreibst "gleichzeitig", meinst aber wohl "nacheinander"?

Soweit die Situation, aber was möchtest du nun machen? Möchtest du die Daten aus einer Datei untereinanderhängen, oder etwas anderes?

Grundsätzlich würde es sich anbieten, ein Array anzulegen:
Code:
myMatrix{k}

wobei k ein Zähler ist, der entweder über eine for-Schleife oder per k = k + 1 in einer while-Schleife erhöht wird.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
marsss
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2016, 12:17     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine schnelle Antwortr. Ich meinte natürlich nacheinander.

Das mit dem Zähler muss ich allerdings noch ausprobieren, bin leider noch nicht dazu gekommen. Ist aber eine gute Idee vielen Dank.

Ich würde nun gerne immer die erste Spalte, jeder Datei, zusammen in einem Plot darstellen. Also im Prinzip jede Spalte als eigene Funktion, aber im gleichen Diagramm.

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