Verfasst am: 13.01.2008, 14:03
Titel: Auto. auslesen von Dateien aus einem Ordner
Hallo,
dachte das könnte jemand interessieren.
Folgendes Problem:
Man macht Messungen. Es entstehen verschiedene Datendateien.
Normalerweise führt man dann eine gscheite Benennung ein z.B. wie ich Bxx.txt. Diese Daten auszuwerten ist mühsam, wenn man erst alle Daten in Matlab laden will. Besser ist es, diese Daten in einen Ordner zu stecken und diesen dann auszuwerten.
Was muss Matlab dafür leisten:
- Ordnerstruktur einlesen
- Generieren der Dateinamen
- Sortieren der Dateinamen*
* Um keinen Datensalat zu bekommen, ist es sinnvoll, die Daten der Reihe nach einzulesen, dazu müssen die Dateinamen sortiert werden.
- Daten vom Header trennen*
* Die meisten Messlurche schreiben noch Zeug in den Header. Das sind ja keine Daten und müssen daher von den Daten getrennt werden. Ideal ist, wenn dieses Zeug immer in der selben Zeile vorkommt, dann kann man Matlab sagen: suche ab hier nach Daten.
- Daten von Datei in Vektor übertragen*
* Es macht es wesentlich komplexer, wenn die Datensätze verschiedene Länge haben.
% Übergibt A.name an B(i) (Einlesen der Namen zum Auswerten) % *********************************************************** for i =1:g
B=A(i).name;
size(B');
for k = 1:size(B');
a(1,k) = B(1,k);
end end
% Erzeuge String mit file-Namen % *********************************************************** for h = 1 : (g-2) if h ==1
meinfile = strcat(A(h+2).name);
else
meinfile = [meinfile,strcat(A(h+2).name)];
end end
% Suche nach Stellen, wo der Buchstabe 'B' vorkommt % ***********************************************************
strf = strfind(meinfile,'B');
size(strf);
length = size(meinfile);
df = length(1,2);
as = 1;
for i =1:(g-3) if i == 1
n = 1;
else
n = i;
end for h =strf(n):(strf(i+1)-1)
diffn = h - strf(n)+1;
b(i,diffn) = meinfile(h);
end end
% Extrahieren der Rohdaten % Vorsicht: die Länge g ist immer um 1 zu groß for i = 1:(g-1)
str = b(i,:);
disp 'open file'
str
data = dlmread(str,'\t',15,0); % Suche in str(Datei) ab Zeile 15, Trennungszeichen zwischen den Werten ist ein\t
realdata(:,i) = data(:,2);
end
schön, Fragen zum automatisierten Datenimport kamen in
letzter Zeit ja mehrere.
Aber korrigier mal bitte die Code-Umgebungen, dann wird
es übersichtlicher und die Smilies verschwinden aus dem
Quelltext.
Viele Grüße
nschlange
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
Einstellungen und Berechtigungen
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
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.