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

ASCII bzw. txt- Dateien einlesen und weiterrechnen

 

MS@GL
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 12.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2009, 18:29     Titel: ASCII bzw. txt- Dateien einlesen und weiterrechnen
  Antworten mit Zitat      
Hallo Leute,

ich habe eine dringende bitte. Vielleicht könnt ihr mir ja helfen.

Folgendes Problem:

Ich möchte eine Textdatei einlesen, die folgendermaßen aufgebaut ist.

Datum Uhrzeit Kraft Weg
Einheit Einheit
03.11.2009 08:23:33.391 -4.592669 -6.605006
03.11.2009 08:23:33.393 -4.617688 -6.604035

Die ersten beiden Zeilen sind Name und Einheit der Spalten. Das brauche ich nicht. Ich muss nur die Daten ansich einlesen.
Das nächste Problem was ich habe ist, dass ich mit diesen Daten weiterrechnen muss. Das heist für mich, dass ich das Zeilenweise machen muss (korrigiert mich wenn ich da Falsch liege, oder es vielleicht auch anders geht).
Naja, auf jeden Fall sind die Dateien zwischen 40.000 und 160.000 Zeilen lang!!! Deswegen wollte ich das mit Matlab machen. Ich hatte Matlab mal im Studium, aber das liegt schon einige Jahre zurück und hoffe deshalb auf eure Unterstützung.
Denn wenn es geht, würde ich das Ergebnis dann auch gerne wieder in eine neue Spalte in die Ausgangsdatei schreiben wollen.

So, ich hoffe das ich mich nicht zu verwirrend ausgedrückt habe Wink

Also, schon mal vielen Dank im voraus!!!

Gruß
Martin
Private Nachricht senden Benutzer-Profile anzeigen


MS@GL
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 12.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2009, 09:42     Titel: ...hat denn keiner eine Idee???
  Antworten mit Zitat      
Hi, ich bin's nochmal

ich habe es mal mit "textscan" versucht. Damit kann ich die Datei zwar einlesen und auch die Spaltenüberschriften weglassen. jedoch ist die Ausgabe nicht zufrieden stellend. Ich hätte es dann nämlich gerne als Matrix, aber leider scheint das alles als String gespeichert zu sein.

Bitte, ich brauch eure Hilfe!!! Oder sind meine Vorstellungen zu utopisch und Matlab kann das nicht. Gibt es denn mit dem Befehl "load" nicht die Möglichkeit eine Datei Zeilenweise einzulesen bzw. nur einen bestimmten Bereich einzulesen???

Bitte helft mir auf die Sprünge!!! DANKE!!!

Gruß
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 13.11.2009, 12:17     Titel:
  Antworten mit Zitat      
Hallo,
können Matlab tut es schon, aber zaubern tut es doch nicht.
Mit einem Befehl kannst du doch nicht alles erschlagen.


textscan ist ein gutes Schlagwort.

so lese ich z.B. für mich csv-Dateien ein,
ich könnte mir vorstellen dass es bei dir ähnlich gehen soll:
Code:

fid              = fopen(filename,'r')
Data           = textscan(fid, '%s','Delimiter','\n');
Data           = regexp([Data{:}],'\s','split');

% num of columns
len_row            = cellfun(@length, Data);
max_len            = max(len_row);
min_len            = min(len_row);
%
% header has low number of columns,
header             = fileData(len_row==min_len);
header                 = strtrim([header{:}]);
%
% delete header
Data           =  Data(len_row==max_len);
% first row contains attributes names
attributes = strtrim(Data{1});
% create cell mat
Data           = vertcat(Data{2:end});

% Danach muss du die Daten entsprechend konvertieren
% Datum vielleicht mit datenum zu Integer konvertieren usw...
% Dass muss du besser wissen.
 
Private Nachricht senden Benutzer-Profile anzeigen
 
MS@GL
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 12.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2009, 12:43     Titel:
  Antworten mit Zitat      
Moin, moin,

vielen Dank für die Anwort, leider kommt immer ne Fehlermeldung bei folgender Zeile:
"Data = regexp([Data{:}],'\s','split');"
Error using==>regexp
Invalid option for regexp: split.

Vielleicht kannst du mir da nochmal helfen. Was soll dieser Ausdruck eigentlich bewirken, aus der Hilfe bin ich leider nicht schlau geworden.
Wenn ich die Zeile auskommentieren, kommt der nächste Fehler gleich danach bei:
"len_row = cellfun(@length, Data); "
Funktion name must be a string

Sad

Dank!
Gruß
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 13.11.2009, 14:11     Titel:
  Antworten mit Zitat      
Welche Matlab Version verwendest du?
Private Nachricht senden Benutzer-Profile anzeigen
 
MS@GL
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 12.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2009, 15:24     Titel: MatlabVersion
  Antworten mit Zitat      
Matlab 7
Version:7.0.0.19920 (R14)
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 16.11.2009, 18:53     Titel:
  Antworten mit Zitat      
Es fehlen bei deiner Matlab-Version diese Features:
versuch es mal so:
Code:

fid              = fopen(filename,'r')
Data           = textscan(fid, '%s','Delimiter','\n');
Data           = Data{:};
for k=1:length(Data)
   Data{k}   = strread(Data{k},'%s','delimiter',' ');
end

% num of columns
len_row            = cellfun('length', Data);
max_len            = max(len_row);
min_len            = min(len_row);
%
% header has low number of columns,
header             =  Data(len_row==min_len);
header                 = strtrim([header{:}]);
%
% delete header
Data           =  Data(len_row==max_len);
% first row contains attributes names
attributes = strtrim(Data{1});
% create cell mat
Data           = vertcat(Data{2:end});
 
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.