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

Spalten aus mehreren Dateien zusammenführen

 

Dexter
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.12.2013, 06:07     Titel: Spalten aus mehreren Dateien zusammenführen
  Antworten mit Zitat      
Hi Leute,

ich bin mal wieder auf ein Problem gestoßen. Und zwar habe ich 96 Textdateien mit jeweils 3 Spalten. Jede Datei enthält die Messdaten zu einem bestimmten Zeitpunkt. Um plots über den gesamten Zeitraum zu erstellen, müssen alle Spalten in einem array stehen, also 96 x 3 Spalten.
Bisher habe ich alle Dateien aus dem Ordner eingelesen und in der cell "files" gespeichert. Wie kann ich nun auf jede einzelne der Dateien zugreifen (in der richtigen Reihenfolge), mir die drei Spalten (ohne den einzeiligen Header) rauskopieren und alle zusammen (in der richtigen Reihenfolge) in ein neues Cell-Array speichern?

Bisher habe ich diesen Code:

Code:
path = 'C:\Users\LaLa\Desktop\Lidar_Test\';
list = dir([path '*.hpl']);
files = {list.name};
for k=1:numel(files)
    % einlesen der Dateien
    fid = fopen(fullfile(path,files{k}),'r');
    daten{k} = textscan(fid,'Headerlines',1,'EmptyValue',0,'EndOfLine','\r\n','Delimiter','');
    fclose(fid);
end

clearvars ans fid

% -------------------------------------------------------------------------%
for i=1:1:96
Datei = [files{1,i,1}];
 
fid = fopen(Datei);
format = '%f%f%f';

C = textscan(fid, format,'Headerlines',1,'EmptyValue',0,'EndOfLine','\r\n','Delimiter','');  
% 'Headerlines u.U. anpassen'
clearvars ans fid format i;

% Hight = C{1,1,1};
% Wind_Direction = C{1,2,1};
% Wind_Velocity = C{1,3,1};
end


Die auskommentierten letzten Spalten sind die drei gesuchten. Im Moment nur auf eine Datei angepasst.

Grüße,
Dexter
Private Nachricht senden Benutzer-Profile anzeigen


Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 13.12.2013, 02:26     Titel:
  Antworten mit Zitat      
Hallo Dexter,

Wenn du Beispieldateien zur Verfügung stellst, schau ich gerne, ob ich behilflich sein kann.

Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Dexter
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2013, 12:38     Titel:
  Antworten mit Zitat      
Hi,

habe dir vier Dateien angehängt. Danke für die Hilfe!

Lidar_Test.rar
 Beschreibung:

Download
 Dateiname:  Lidar_Test.rar
 Dateigröße:  2.77 KB
 Heruntergeladen:  275 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 14.12.2013, 14:25     Titel:
  Antworten mit Zitat      
Hallo

path ist bereits in Matlab reserviert, deswegen bitte deine Varaible anders benennen, sonst kann es vorkommen, dass Matlab eigene Funktionen nicht mehr kennen würde.

Ich verstehen nicht, was du hier unter 96x3 Matrix meinst,
weil deine Textdateien haben jeweils 200 Zeilen und 3 Spalten?

vielleicht so:
Code:

path2hlp ='C:\Users\LaLa\Desktop\Lidar_Test\';
list     = dir(fullfile(path2hlp, '*.hpl'));
files    = {list.name};
format   = '%f%f%f';
daten    = cell(1,numel(files));
for k=1:numel(files)
    % einlesen der Dateien
    fid = fopen(fullfile(path2hlp, files{k}),'r');
    format = '%f%f%f';
    daten{k} = textscan(fid,format,'Headerlines',1,'EmptyValue',0,'EndOfLine','\r\n','Delimiter','');
    fclose(fid);
end

% nach diesem Schritt ist variable daten 96x3 groß ist aber Cell.
daten = cat(1, daten{:});
Height = cat(1, daten{:, 1});
Wind_Direction = cat(1, daten{:, 2});
Wind_Velocity = cat(1, daten{:, 3});
 
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Dexter
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2013, 09:11     Titel:
  Antworten mit Zitat      
Ich habe 96 Dateien mir jeweils 200 Zeilen und 3 Spalten.

Dein Code funktioniert super, danke! Musste nur noch die Dimension von cat ändern, da es mir dadurch leichter fällt mit den Daten zu arbeiten.
Private Nachricht senden Benutzer-Profile anzeigen
 
Dexter
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2013, 01:37     Titel:
  Antworten mit Zitat      
Ich habe dann doch nochmal eine weitere Frage. Da ich eine Zeit benötige, um die Daten anständig zu plotten, habe ich mir diese aus den Dateinamen extrahiert und umgeformt. Die Zeit sieht momentan noch so aus: HHMMss.
Nach einer Umformung mit
Code:
datestr(datenum(time1, 'HHMMss'), 'HH:MM:ss');

erhalte ich die korrekt formatierte Uhrzeit, allerdings in einem char, welches ich so noch nicht gesehen habe. Es sind keine Zeilen oder Spaltenzahlen vorhanden. Wenn ich auf die Variable klicke, habe ich ein weißes Fenster mit
Code:
val =

00:08:19
00:23:19
00:38:19
00:53:20
01:08:21
01:23:21
01:38:22
01:53:23
02:08:24
 


Will ich das nun mit
Code:
x = str2num(variable);
umwandeln, bekomme ich eine leere double variable.

Kann mir jemand sagen, wie ich das korrekt umwandle?

Grüße,
Dexter
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 17.12.2013, 13:41     Titel:
  Antworten mit Zitat      
Hallo

wenn du die Zeiten zu plotten brauchst dann lassen datestr weg, datenum ist nur nötig.

Zum plotten DATETICK verwenden, dazu in Doku gibt sehr schön erklärenden Beispiele.

Code:
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.