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

Textdatei mit textread einlesen

 

bonath
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 22.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2013, 16:52     Titel: Textdatei mit textread einlesen
  Antworten mit Zitat      
Hallo liebe Gemeinde,
ich möchte aus den *.txt logfiles eines Verhaltensexperimentes
verschiedene Zeilen auslesen (rot markiert im Bild Bedingungen 1,2,3,4 usw. und responsen 71 und 72). Leider sind in manchen Zeilen zweier Spalten auch Wörter (blau markiert im Bild) dabei, die ignoriert werden sollen. Leider bleibt das Rauslesen dann immer an den Wörtern hängen. Das outputformat sollen 'Double arrays' sein
Hat jemand von Euch ne Idee ?

Danke Gruß Björn

Code:
% Das ist mein Programm.
rnn=1; % anzahl runs

for i=1:rnn
        eval(sprintf('[test, c1,c2, bin%d timex%d] = textread(''Pilot4-belohnung.log'',''%%s %%d %%s %%d %%s %%*[^\\n]'',''headerlines'',6);\n',i,i));
end

a=[];
for i=1:rnn
    eval(sprintf('a=[a; bin%d timex%d];\n',i,i))
end

 


Anna_log.jpg
 Beschreibung:

Download
 Dateiname:  Anna_log.jpg
 Dateigröße:  95.98 KB
 Heruntergeladen:  441 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.10.2013, 21:40     Titel:
  Antworten mit Zitat      
Hallo,

wenn du die Datei bzw. diesen Ausschnitt davon anhängst, könnten wir mehr damit anfangen.

Rückfragen:
- Sollen die Zeilen vor "Einleitung" ignoriert werden?
- Einige Zahlen sind versetzt. Ist das bedingt durch Tabulatoren, oder wie kommt das?

Tip:
- kein EVAL, wenn nicht unbedingt! Es ist sehr schwierig, Code mit EVAL zu debuggen. Statt durchnumerierten Variablen kann man Cell Arrays verwenden.
- textscan statt textread.

Grundsätzlich wäre die Empfehlung, textscan in Kombination mit fgetl in einer while-Schleife zu verwenden, um sich durch die Datei zu 'tasten'.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bonath
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 22.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2013, 09:26     Titel: textread
  Antworten mit Zitat      
Hallo Harald,
danke für die schnelle Antwort,

es sollen alle Zahlen nach "Einleitung" rausgelesen werden, außer die Zeilen mit den Wörtern "100% percent correct" und "dauer_Antwort"

die responsen gehören zu dieser Zeile und sind nur durch Tabulatoren so versetzt.

ich dachte vielleicht, dass es bei textread ein Format gibt (obwohl ich es nirgens gefunden hab) dass Zahlen ausließt und Buchstaben ignoriert

ich kenne mich mit "textscan in Kombination mit fgetl in einer while-Schleife" leider nicht besonders gut aus

vielen Dank für Eure Ratschläge
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.10.2013, 19:23     Titel:
  Antworten mit Zitat      
Hallo,

hast du dir denn textscan mal in der Doku angeschaut? Es ist sehr ähnlich zu textread, erlaubt aber ein schrittweises Lesen einer Datei. Grundgerüst:

Code:
fid = fopen('file.txt');
I = 1;
while ~feof(fid)
data{I} = cell2mat(textscan(fid, format, <usw.> ));
I = I+1;
fgetl(fid);
end
fclose(fid);
 

Wenn du die Datei anhängst, kann ich es auch gerne mit der Datei ausprobieren - ansonsten eben leider nicht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bonath
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 22.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.10.2013, 13:35     Titel:
  Antworten mit Zitat      
Hallo,

ich bekomme den doofen code nicht zum Laufen Sad

anbei mein logfile
Ich bin quasi nur an den Zahlen für die Spalten 4 und 5 interessiert, um sie statistisch weiterverarbeiten zu können, tue mich aber irgendwie schwer mit textscan

Danke für Deinen support

Gruß Björn

Verhaltensdaten.txt
 Beschreibung:

Download
 Dateiname:  Verhaltensdaten.txt
 Dateigröße:  77.12 KB
 Heruntergeladen:  407 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.10.2013, 20:50     Titel:
  Antworten mit Zitat      
Hallo,

meine Empfehlung ist zu versuchen, Textdateien von vornehereim immer möglichst aufgeräumt zu bekommen.

Wenn etwas nicht funktioniert, dann bitte möglichst genau beschreiben, was (= welcher Code) inwiefern nicht funktioniert.
Code:

fid = fopen('Verhaltensdaten.txt');
data = [];
while ~feof(fid)
    localdata = textscan(fid, '%*s %*d %*s %d %d %*[^\n]');
    if numel(localdata{1}) > numel(localdata{2})
        localdata{1}(end) = [];
    end
    data = [data; cell2mat(localdata)];
    droppedline = fgetl(fid);
end
fclose(fid);


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bonath
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 22.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.10.2013, 09:12     Titel:
  Antworten mit Zitat      
SUPER
Dankeschön !!!
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.