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

Alle Spalten von txt-Datei als Matrix in Matlab importieren

 

DonCorleone
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2016, 22:28     Titel: Alle Spalten von txt-Datei als Matrix in Matlab importieren
  Antworten mit Zitat      
Hi!
Ich habe Probleme beim Einlesen einer txt-Datei in Matlab. Bisher habe ich das so gemacht:

Code:

close all, clear all, clc

file = fopen('wells.txt','r');
heading = textscan(file,'%s %s %s %s',1);

fgetl(file);
data = textscan(file,'%n %n %n %n');
fclose(file);

 


Hier sage ich ja, dass er mir Werte aus vier Spalten auslesen soll. Allerdings haben die txt-Dateien die ich verarbeiten muss, oft unterschiedlich viele Spalten und Zeilen. Wie kann man einfach alle Spalten einlesen?

Am besten wäre es wenn er mir sämtliche Spaltennamen in einen Zeilen-Vektor schreibt. Und außerdem sämtliche Werte dieser Spalten in eine n*m Matrix. Die Spalten sind jeweils durch 'tabs' getrennt.
Kann mir da bitte jemand eine Hilfestellung geben? Danke! Smile
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

die Anzahl der Spalten lässt sich feststellen, indem du in einer Zeile die Anzahl der Trennzeichen analysierst.

Code:
s = 'A   b   c'; % zwischen den Buchstaben sind jeweils Tabulatoren. Das wird hier nicht richtig übernommen
numCols = sum(double(s) == 9) + 1;


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.01.2016, 00:18     Titel:
  Antworten mit Zitat      
Also mir ist um ehrlich nicht so ganz klar, wie ich das jetzt auf meinen Code anwenden soll.... Question

[EDITED, Jan, Bitte kein Top-Quoting]
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.01.2016, 09:38     Titel:
  Antworten mit Zitat      
Hallo,

mit fgetl eine Zeile holen und diese wie gezeigt analysieren. Wenn du eine Beispieldatei zur Verfügung stellst, kann ich das gerne anhand dieser Datei zeigen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.01.2016, 14:04     Titel:
  Antworten mit Zitat      
Hi Harald,

anbei mal eine Datei mit einem typischen Inhalt den ich auslesen möchte. Die Anzahl der Spalten und Zeilen kann - wie schon erwähnt - variieren.

Danke für deine Hilfestellung!!

Test.txt
 Beschreibung:

Download
 Dateiname:  Test.txt
 Dateigröße:  194 Bytes
 Heruntergeladen:  352 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.01.2016, 14:18     Titel:
  Antworten mit Zitat      
Hallo,

z.B. so:

Code:
file = fopen('test.txt','r');
testLine = fgetl(file);
numCols = sum(double(testLine) == 9) + 1;
frewind(file)

heading = textscan(file,repmat('%s', 1, numCols),1);

fgetl(file);
data = textscan(file,repmat('%f', 1, numCols), 'TreatAsEmpty', 'none');
fclose(file);

heading = [heading{:}]
data = cell2mat(data)


Schau dir auch mal Tables an, z.B. readtable. Damit bekommst du Spaltenüberschriften und Daten schön in eine Variable.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2016, 11:31     Titel:
  Antworten mit Zitat      
Wow danke dir! Das funktioniert perfekt! Ich hatte jetzt selbst etwas zusammengeschrieben, das auch funktionierte, aber deine Version läuft wesentlich schneller. Very Happy
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.