Verfasst am: 25.04.2012, 09:57
Titel: Einlesen von vielen Textdateien... mal wieder
hallo zusammen...
ich habe ein problem, sorry, dass da wieder ein neuer thread für aufgemacht wird, aber ich habs mit einigen methoden, die hier so kamen schon probiert und es funktioniert zum verrecken nicht^^
ich hänge mal eine beispiel datei an, die anderen sehen exakt so aus, nur halt mit anderen werten
jetzt würde ich gerne diese ganzen werte, die da drin sind auslesen und bei mir einspeichern in einem array oder so.... ich habs schon mit allen möglichen sachen versucht (textread, load, ...) aber es will einfach nicht funktionieren....
das ist bisher mein versuch, das ganze auskommentierte zeug hab ich zwischendurch mal versucht
Code:
function Kennlinien() % festlegen des ordners, aus dem die dateien ausgelesen werden
Quellordner = 'C:\Users\Alex\Desktop\Pa\Matlabauswertungen\test';
stringquelle=strcat(Quellordner,'\*.txt');
liste = dir(stringquelle); %Laden des gesamten ordners (nur matlabdateien)
files = {liste.name};
% festlegen des ordners, in den die dateien später geschrieben werden
Zielordner = 'C:\Users\Alex\Desktop\Pa\Kennlinien\';
for k=1:numel(files) % einlesen der Dateien [pathstr, name, ext] = fileparts(files{k})% #ok<*NASGU,*ASGLU> % benennen der datei; pathstr und ext sind egal, aber nicht weglassen hier!
namedatei=strcat(name,'.txt')
% name1=regexprep(name,'PE','PES'); %ersetzen der falschen bezeichnung PE durch PES % name2=regexprep(name,'_',' '); %ersetzen der Unterstriche durch Leerzeichen
yachse=0:0.001:0.5; %erstellen der y-achse mit mü als feste achse
% auswählen der x-achse! nur eine achse auswählen!
xachsetemp=15:0.5:45; % temperaturachse
xachsefeucht=25:1:90; % luftfeuchtigkeitachse
% NAME = regexp (name, '_', 'split'); % zerlegen des names in bestandteile nach jedem unterstrich
du musst je die Einleseroutine speziell auf deinen Fall anpassen
Versuche zuerst doch nur eine Datei einzulesen,
dann ist relativ einfach das zu erweitern
1) Lese die Textdatei komplett ein
2) Umformen und Konvertieren der Werte
ich komme nach vielem suchen und stöbern eibfach nicht weiter.
Ich will viele Textdateien bearbeiten. Matlab soll sich diese nacheinander aus dem Quellordner nehmen, die zwei Kopfzeilen löschen und Komma durch Punkt ersetzen (Löschen und ersetzen funtkioniert schon) und dann die Dateien unter neuem Namen, mit fortlaufender Nummer (Messung_1, Messung_2, Messung_3,...usw.) in einem neuen Ordner speichern. Habe ich ein wenig an dem ersten Eintrag orientiert.
%Festlegen von Quell- und Zielordner
Quellordner='Pfad1';
stringquelle=strcat(Quellordner,'\*.txt');
liste = dir(stringquelle); %Laden des gesamten Ordners
files = {liste.name};
Zielordner1='Pfad2';
for k=001:numel(files);
% einlesen der Dateien [pathstr, name, ext] = fileparts(files{k});
fid=strcat(name,'.txt');
A = textscan(fid,'%s','Headerlines', 2);
for i=1:length(A{1,1});
A{1,1}{i,1}=str2num(strrep(A{1,1}{i,1},',','.'));
end
A=A{1};
%Dateibezeichnung ändern
name1=regexprep(name,':','test_ok_{k}');
neu=fopen('Zielornder1\name1', 'wt+') fprintf(neu, '%s\n', A{:});
end
Nun werden die Variablen mit diesen Namen verwendet, und nicht mehr feste Strings.
Ein weiteres Problem ist, dass Du die Files nicht wieder schließt, und sie wegen des festen Namens nochmals geöffnet hast. Das Namens-Problem ist nun behoben, aber schließen muss man die Files unbedingt trotzdem: "fclose(neu)".
%Festlegen von Quell- und Zielordner
Quellordner='Pfad1';
stringquelle=strcat(Quellordner,'\*.txt');
liste = dir(stringquelle); %Laden des gesamten Ordners
files = {liste.name};
Zielordner1='Pfad2';
for k=001:numel(files);
% einlesen der Dateien [pathstr, name, ext] = fileparts(files{k});
fid=strcat(name,'.txt');
"name1" ist ja dann nicht mehr definiert, da dachte ich, dass ich nur noch den "Zielordner1" öffnen muss, aber selbst wenn die Definition erhalten bleibt bekomme ich folgenden Fehler:
??? Error using ==> fullfile
Not enough input arguments.
Error in ==> Minimieren_2 at 26
neu = fopen(fullfile(Zielordner1), 'wt+')
mit dem "k" hast du das richtig erkannt. Das sollte die fortlaufende Nummer sein. Die neuen Dateien sollen also in den Zielordner1 mit test_ok_1, test_ok_2,...usw. gespeichert werden.
zusammengefasst: matlab nimmt nacheinander die dateien aus dem quellordner, löscht die kopfzeilen und ersetzt kommas durch punkte und speichert die unter neuen namen ab. nimmt diese dateien und löscht hier jede zweite zeile und speichert die wieder unter neuen namen ab. und alles mit fortlaufender nummer.
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.