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

Aus Ordner mit .txt immer bestimmte Spalte auslesen

 

Skipper
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 15.01.11
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 24.01.2011, 15:25     Titel: Aus Ordner mit .txt immer bestimmte Spalte auslesen
  Antworten mit Zitat      
Hallo,

ich möchte aus einem Ordner mit Messwertdateien in .txt-Format immer die 1.Spalte(Time) und 28.Spalte(Kraft_z) in jedem Dokument auslesen lassen.
Ich habe in diesem Forum auch schon nach Möglichkeiten dafür gesucht, es funktioniert aber keine so richtig.
Bis jetzt habe ich das Ganze so:
Code:
clc

files = (dir('D:\IPS-Messung1\#Messdaten\TDMS\TEXT\Einfederung-txt-Datei\FBoben'))';
names = {files.name};
k = 1:numel(files);

% Spalte 28 auswählen, Kraft in z-Richtung
F_z  = names{k}(:,28 );


Mit der Fehlermeldung: >> F_z = names{k}(:,28 )
??? Bad cell reference operation.


Die .txt-Datei sieht man in angehängten Bild.
Ich weiß leider keine Lösung, kann jemand helfen???

.txt-Datei.JPG
 Beschreibung:

Download
 Dateiname:  .txt-Datei.JPG
 Dateigröße:  137.59 KB
 Heruntergeladen:  1023 mal
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.01.2011, 16:12     Titel: Re: Aus Ordner mit .txt immer bestimmte Spalte auslesen
  Antworten mit Zitat      
Hallo Skipper,

Zitat:
Ich habe in diesem Forum auch schon nach Möglichkeiten dafür gesucht, es funktioniert aber keine so richtig.
Code:
clc
files = (dir('D:\IPS-Messung1\#Messdaten\TDMS\TEXT\Einfederung-txt-Datei\FBoben'))';
names = {files.name};
k = 1:numel(files);
F_z  = names{k}(:,28 );

[/code]

Ich kann kaum glauben, dass Du hier im Forum wirklich gesucht hast. Du versuchst auf die Spalte 28 zuzugreifen, verwendest als Daten aber den Namen der Datei?! Der Name ist lediglich ein String und Matlab kann beim besten Willen nicht ahnen, dass Du damit das File einlesen möchtest.
Bitte lies die Dokumentation von FOPEN, FREAD, FSCANF, IMPORTDATA und LOAD.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Skipper
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 15.01.11
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 24.01.2011, 16:17     Titel:
  Antworten mit Zitat      
Ich habe gesucht, denn den Code, den du oben siehst kommt aus diesem Forum...
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 24.01.2011, 16:25     Titel:
  Antworten mit Zitat      
Hallo Skipper,
ich nehme an du meinst den Code von steve aus dem Thread?
http://www.gomatlab.de/einlesen-all.....ighlight,numel+files.html

Code:

path = 'E:\Programme\MATLAB704\work\Matlab\Messreihe\Matrix';
liste = dir(path);
files = {liste.names};
for k=1:numel(files)
    % einlesen der Dateien
    fid = fopen(fullfile(path,files{k}),'r');
    daten{k} = textscan(fid,'%s');
    % ...
end
 


Damit werden nur die Dateinamen erstmal eingelesen, so wie Jan dir das gesagt hat.
Erst durch den Befehl fopen kannst du auf den Inhalt der Datei zugreifen. Am Ende musst du die Datei aber auch mit fclose schließen.
Mit textscan oder regexp kannst du dann den Dateiinhalt durchsuchen.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Skipper
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 15.01.11
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 24.01.2011, 16:44     Titel:
  Antworten mit Zitat      
Genau den meine ich.

Habe weitergebastelt und bin nun hier:
Code:
path = 'D:\IPS-Messung1\#Messdaten\TDMS\TEXT\Einfederung-txt-Datei\FBoben';
liste = dir(path);
files = {liste.name};

for k=1:numel(files)
    % einlesen der Dateien
    fid = fopen(fullfile(path,files{k}),'r');
    daten{k} = textscan(fid,'%n %n');
end

plot(daten{1}{:,1},daten{1}{:,28});


Fehler:
??? Error using ==> textscan Invalid file identifier. Use fopen to generate a valid file identifier.

Error in ==> Einfederung at 18
daten{k} = textscan(fid,'%n %n');

Ich habe doch aber den fopen Befehl...
Und die files stehen alle in einem cell drinnen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.01.2011, 17:06     Titel:
  Antworten mit Zitat      
Hallo Skipper,

Code:
path = 'D:\IPS-Messung1\#Messdaten\TDMS\TEXT\Einfederung-txt-Datei\FBoben';
liste = dir(path);
files = {liste.name};
disp(files);
 

Dann wirst Du sehen, dass Dir der DIR Befehl auch die Ordner '.' und '..' zurückgibt, die aber keine Datein sind, also auch nicht per FOPEn geöffnet werden können.

Um Deinen Code selbst zu debuggen kannst Du dies eingeben:
Code:

Dann stoppt Matla, wenn ein Fehler auftritte und Du kannst die Variablen im CommandWindow anschauen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Skipper
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 15.01.11
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 25.01.2011, 22:27     Titel:
  Antworten mit Zitat      
Hmm...
das gibt mir Matlab ja sowieso mit Zeile und Fehlermeldung aus. Aber leider bin ich in MatLab so dermaßen unerfahren, dass ich eben nichts damit anfangen kann und heute immer noch an diesem Problem herumbastle.
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 26.01.2011, 11:52     Titel:
  Antworten mit Zitat      
Hallo Skipper,
du solltest dir dann etwas Wissen über das Prinzip eines Debuggers aneignen.
Es erleichtert einem ungemein, die Programmierung.

Ohne Debugmodus, wird dir Matlab einfach nur die Fehlermeldung aus und Ende.
Mit Debugmodus bekommst du auch die Fehlermeldung, aber der Unterschied ist, wie Jan schon sagte, dass du dir auch die Variableninhalte anschauen kannst.
Beispielsweise könntest du einfach im Commandwindow files{k} eingeben und würdest sehen, was gerade im Moment des Absturzes in diese Variable stehen würde. Dann würdest du sehen, dass dort '.' steht und das ist keine Datei und somit kann fopen nichts mit anfangen.

Das würdest du ohne Debugmodus nicht so schnell rausfinden und das macht den Unterschied aus.

Als Konsequenz würde ich jetzt im ersten Workaround k nicht bei 1 sondern bei 3 anfangen lassen.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Skipper
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 15.01.11
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 29.01.2011, 19:31     Titel:
  Antworten mit Zitat      
Habe das Problem nun anderweitig gelöst:

http://www.gomatlab.de/gleiche-date.....getfile-nicht-t16345.html
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.