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

Txt Datei ohne Buchstaben einlesen

 

Meiner

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2013, 18:16     Titel: Txt Datei ohne Buchstaben einlesen
  Antworten mit Zitat      
Hallo ich habe ein Problem,
ich möchte eine txt einlesen, die aber mit den Spaltennamen beginnt, möchte aber nur die Werte aus den Spaten.
Die Dateien sehen alle so aus (unter den 3 hinteren Spalten stehen auch Werte und es gibt auch noch mehr Spalten das ist nur ein BSp.) Ich möchte somit unter 'Counter' alle Zeilen und Spaten einlesen

// Start Time: 0
// Update Rate: 100.0Hz
// Scenario: 34.3
// Firmware Version: 1.0.7
Counter Acc_X Acc_Y Acc_Z
19033
19034
19035

Kann mir bitte jemand helfen?!
Danke euch


Harald
Forum-Meister

Forum-Meister


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

du kannst z.B. textscan verwenden und die Anzahl der zu überspringenden Zeilen mit 'HeaderLines' angeben.
Code:


Falls die Anzahl der zu überspringenden Zeilen variabel sein soll, kannst du dir mit fgetl Zeile für Zeile aus der Datei holen und dann mit textscan zu lesen anfangen, wenn der relevante Teil kommt.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2013, 20:49     Titel:
  Antworten mit Zitat      
Ich hab es bis jetzt so probiert.

fid = fopen(filename);
line = [];

while isempty(strfind(line,'Counter'))
line = fgetl(fid);

end

aber da schreibt er nicht die ganze datei. wo ist mein Fehler.

Danke dir Harald
 
Harald
Forum-Meister

Forum-Meister


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

der von dir genannte Code findet die erste Zeile, die 'counter' enthält - das war's. Anschließend musst du den verbleibenden Inhalt - beispielsweise mit textscan - einlesen.

Wenn du weitere Hilfe benötigst, wäre es hilfreich, eine Beispieldatei anzuhängen.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2013, 22:08     Titel:
  Antworten mit Zitat      
die Datei ist im Anhang
Danke dir

P042_F_Lau_S1_003-000.txt
 Beschreibung:

Download
 Dateiname:  P042_F_Lau_S1_003-000.txt
 Dateigröße:  1.59 MB
 Heruntergeladen:  263 mal
 
Harald
Forum-Meister

Forum-Meister


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

danke für die Datei. Hast du denn aber selbst mal ausprobiert, mit textscan zu arbeiten? Falls ja, wo gab es dabei Probleme? Falls nein, warum nicht?

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2013, 09:18     Titel:
  Antworten mit Zitat      
Hallo,
ja aber ich weiß nicht so richtig wie und wann ich den Befehl einsetzen soll. Ich hab bis jetzt kaum Matlab Erfahrung.
Grüße
 
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.05.2013, 09:32     Titel:
  Antworten mit Zitat      
Hallo,

wann: nach den fgetl-Befehlen.
wie: so wie er dokumentiert ist. Im Abschnitt "Examples" von
Code:
sollte sich etwas finden lassen, das passt.

Noch ein Hinweis: mit
Code:

kannst du dynamisch die Anzahl der Spalten ermitteln, indem du die Anzahl der Tabulatoren (ASCII-Code 9) untersuchst.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2013, 13:31     Titel:
  Antworten mit Zitat      
Hey Harald,
ich hab es nochmal probiert, aber es klappt nicht so richtig
hier mein neuer Code

fid=fopen('P042_F_Lau_S1_003-000.txt');

HEAD = textscan(fid, '%s', 0, 'delimiter', 'Headerlines', 5);

HEAD = fgetl(fid);
HEAD = regexp(HEAD,'\t','split');

DATA = textscan(fid, sprintf('%%%c ',ones(1,length(HEAD))*102),'delimiter',',');
fclose(fid)
ich habe echt keine Ahnung sorry.
Grüße
 
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.05.2013, 14:33     Titel:
  Antworten mit Zitat      
Hallo,

bei dem Code blicke ich nicht ganz durch. Aber warum überhaupt der komplett neue Ansatz? Du hattest doch fast schon alles:
Code:

% von dir
fid = fopen('P042_F_Lau_S1_003-000.txt');
line = [];

while isempty(strfind(line,'Counter'))
line = fgetl(fid);

end
% von mir
cols = length(strfind(line, char(9)));

% und jetzt noch die tatsächlichen Daten lesen, fertig.
content = cell2mat(textscan(fid, repmat('%f', 1, cols)));
fclose(fid);


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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2013, 15:25     Titel:
  Antworten mit Zitat      
Super Vielen Dank!!!!
Du hast mir enorm geholfen. Noch eine Frage ist es denn möglich alle meine Datein, die ja unterschiedliche Namen haben einzulesen?
Ist das über 'function' möglich?
Grüße Sander
 
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.05.2013, 15:49     Titel:
  Antworten mit Zitat      
Hallo,

ja, du kannst dir eine Funktion schreiben, die beispielsweise den Dateinamen als Eingabeargument entgegennimmt und die eingelesenen Daten als Ausgabeargument zurückgibt.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2013, 17:27     Titel:
  Antworten mit Zitat      
Hey Harald,
geht auch eine normale for Schleife bei dem i = die Anzahl der Dateien ist? weil das mit function klappt bei mir nicht
Grüße
 
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.05.2013, 22:05     Titel:
  Antworten mit Zitat      
Hallo,

auch das geht.
Wenn etwas "nicht klappt", bitte immer genau beschreiben, was versucht wurde und wo dabei die Probleme aufgetreten sind, denn dann kann man auch beim ursprünglichen Ansatz Hilfestellung geben.

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 - 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.