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

Textfile mit mehreren Messungen splitten oder auslesen

 

Stefan_puma

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.08.2012, 07:56     Titel: Textfile mit mehreren Messungen splitten oder auslesen
  Antworten mit Zitat      
Hallo,

ich bin nicht so erfahren in Matlab. Unser Matlab Guru ist für eine Weile nicht da und da ich nicht richtig weiterkomme, wende ich mich ans Forum.
Mein Anliegen:
Ich habe eine Textdatei, in der mehrere Messungen zuggleich abgespeichert werden. Die einzelnen Messungen sind durch Schlagwörter "Data" getrennt.

Das ganze sieht dann so ähnlich aus.

Data 1

Time P1 P2 .....
1 4 5
.....

Data 2

Time P1 P2
1 3 5
.........

Diese Textdatei ist sehr groß.

Bisher hatte ich immer nur eine Messung drin und dafür habe ich ein m-file bekommen, dass nach einem Schlagwort, hier 'Time' sucht und dann den Rest einliest.
Nur jetzt soll Matlab von Data zu Data lesen und das jeweils in einer neuen Variablen speichern.
Hier der Code für das bisherige komplette Einlesen.
Das m-file ersetzt ',' durch '.' automatisch und funktioniert gut, auch bei großen Datenmengen.
[code]% Das ist mein Programm.

function [ messdaten variablen headerline ] = read_dewetron( filename )
% 'Time' indicates new dataset
% dataset is split with tabulator, converts ',' to '.'

%% 0. Initialisieren
nlines = 0;
headerline = 0;
ndata = 0;
% zeilanzahl
k = 0;
% spaltenanzahl
n = 0;
tic
%% 1. Datei oeffnen
fid = fopen(filename,'r');
%% 2. Zeilen zählen für pre-allocation
while ~feof(fid)
tline = fgetl(fid);
nlines = nlines + 1;
if (mod(nlines,100000)==0)
disp(['--> analysiere Zeile ' num2str(nlines)]);
end
if ~isempty(strfind(tline, 'Time [s]'))
headerline = nlines;
ndata = 1;
elseif ndata == 1
% zeilen zählen
k = k + 1;
% spaltenanzahl ermitteln, aber nur für die erste datenzeile
if k==1
data=strrep(tline,',','.');
data=regexp(data,'\t','split');
data=str2double(data);
n = length(data);
end
end
end
disp(['Anzahl der Dateizeilen : ' num2str(nlines)]);
disp(['Anzahl der Headerlines : ' num2str(headerline)]);
disp(['Anzahl der Datenzeilen : ' num2str(k)]);
%% 3. Daten einlesen
% allokieren
messdaten = zeros(k,n);
% wieder initialisieren
frewind(fid);
nlines = 0;
headerline = 0;
ndata = 0;
k = 0;
% while-loop kann durch for-loop ersetzt werden
while ~feof(fid)
tline = fgetl(fid);
nlines = nlines + 1;
if (mod(nlines,100000)==0)
disp(['--> lese ein Zeile ' num2str(nlines)]);
end
if ~isempty(strfind(tline, 'Time'))
headerline = nlines;
ndata = 1;
variablen=regexp(tline,'\t','split');
elseif ndata == 1
data=strrep(tline,',','.');
data=regexp(data,'\t','split');
data=str2double(data);
k = k + 1;
messdaten(k,1:n)=data;
end
end

%% 3. Datei schliessen
fclose(fid);
toc
end

Mir würde evtl. schon ein Hinweis, wie ich herangehen soll, helfen.
Vielen Dank im Voraus.


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.