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

Mal wieder txt-Files einlesen

 

Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2009, 22:28     Titel: Mal wieder txt-Files einlesen
  Antworten mit Zitat      
Moin Moin,

ich habe ein hoffentlich kleines Problem mit dem Einlesen verschiedener txt-Dateien. Um es kurz zu machen, so sehen die Files grundsätzlich aus:

text text text
text text text
name1 name 2 name3
text text text
text text text
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3

Ich habe also 5 Headerlines, wovon in der dritten stets die Variablennamen stehen. Ab der sechsten Zeile kommen dann die Daten (Spaltenweise für jede Variable). Ich würde gerne jede Variable mit Namen (name1) und den Daten (1 1 1) abspeichern.
Grundsätzlich weiß ich auch nicht, wie viele Variablen in dem File vorhanden sind. Das ist mein eigentliches Problem. Hat jemand eine Ahnung, wie ich das für jeden Fall über ein m-file einlesen kann?

Danke für alle Tipps.


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.09.2009, 22:34     Titel:
  Antworten mit Zitat      
Hallo,

ich würde die 3. Zeile mit fgetl einlesen und analysieren. Z.B. Anzahl der Leerzeichen abfragen und daraus die Anzahl der Spalten schließen ( = N ) . Dann kann mit textscan arbeiten, und z.B. einem Formatstring repmat(%f, 1, N).

Viele Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.09.2009, 14:39     Titel:
  Antworten mit Zitat      
Hallo,

danke für den Hinweis. Mit der Funktion "fgetl" habe ich es geschafft. Für alle, die ähnliche Probleme haben, schreibe ich mal den Code auf, mit dem ich die Geschichte umgesetzt habe:

Code:
% Definition der Zeile, in der sich die Variablennamen befinden
zeile=3;
% Definition Anzahl Headerlines
headerlines=5;
% Öffnen der Datei
fid=fopen('Testfile.txt');
for i=1:zeile
    tline = fgetl(fid);
    if i==zeile
    % Hier wird geprüft, an welchen Stellen Leerzeichen, bzw. Tabs sind
        s2 = regexp(tline, '\s')
    end
end
% Aus der Anzahl Leerzeichen wird das Format für Textscan gebildet (Anzahl Spalten)
for i=1:length(s2)
    if i==1
        format(1,1:2)='%s';
    else
        format(1,end+1:end+3)=' %s';
    end
end
C = textscan(fid,char(format),'headerlines',headerlines,'delimiter','\t')
fclose(fid);
% Hier werden die Variablennamen mit dem zugehörigen Datenvektor in den Workspace geschrieben.
for i=1:length(s2)
    if i==1
        assignin('base',tline(1:s2(1)-1),str2double(regexprep(C{1}, ',', '.')));
    else
        assignin('base',tline(s2(i-1)+1:s2(i)-1),str2double(regexprep(C{i}, ',', '.')));
    end
end


Also, ich hoffe, das hilft einigen weiter.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.09.2009, 21:51     Titel:
  Antworten mit Zitat      
Ah, auch noch mit Komma als Dezimaltrennzeichen... sowas macht dann natürlich erst recht "Freude". Aber es hat ja geklappt Smile

Grüße,
Harald
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 - 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.