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

Dezimalzahlen aus einer Textdatei entnehmen

 

trust114
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2015, 20:10     Titel: Dezimalzahlen aus einer Textdatei entnehmen
  Antworten mit Zitat      
Hallo Leute,

hab mal ne Frage zu Matlab. Hier erstmal mein code:

fid=fopen('file.txt' , 'r') %zum öffnen der Datei

Datei=fscanf(fid, '%c') % Wiedergabe der Datei

Die Datei hab ich mit im Anhang drin. Nun brauche ich alle Dezimalzahlen die sich in meiner Datei befinden. Die Variable Datei lässt mich jetzt allerdings nicht zeilenweise den Inhalt meiner Datei entnehmen, sondern nur stellenweise, daher auch die 2460 Stellen in meiner Datei. Nun suche ich einen Befehl der es mir ermöglicht alle Dezimalzahlen in dieser Datei zu entnehmen und eventuell in einer Matrix abzuspeichern. Habs auch schon mit dem Befehl

A=str2num(refexprep(Datei, '\D+', ' '));

probiert jedoch leider ohne Erfolg. Bin für jede Hilfe dankbar.

mittel_system.txt
 Beschreibung:

Download
 Dateiname:  mittel_system.txt
 Dateigröße:  2.4 KB
 Heruntergeladen:  636 mal
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 16.11.2015, 08:39     Titel:
  Antworten mit Zitat      
Wenn alle einzulesenden Files grundsätzlich so aussehen wie das Beispiel, würde ich wohl per fgetl die Zeilen einzeln einlesen und alle Leerzeilen und Zeilen, welche mit einem Kommentarzeichen beginnen gleich rauswerfen bzw. ignorieren.

Die übrigen Zeilen würde ich gleich getrennt in 3 Matritzen speichern.
Hierfür würde ich textscan nutzen. Mit %d die Laufende Nummer und mit %f jeweils die weiteren Ziffern.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
trust114
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2015, 09:30     Titel:
  Antworten mit Zitat      
hi,

danke estmal für die Antwort.

Mit fgetl habe ich leider nur die erste Zeile wiedergeben können. Muss da eventuell noch eine Schleife hin? Wie genau kann man denn die Leerzeilen und die Kommentarzeilen ignorieren?

Könntest du bitte einen Programmcode schreiben, hab da leider voll die Probleme mit.

Schönen Gruß
trust114
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 16.11.2015, 09:44     Titel:
  Antworten mit Zitat      
Hab mich verschrieben, versuch
Zitat:
fgets

Und ansonsten hilft die Matlabhilfe -> einfach oben klicken., lesen, weitersuchen.

Weitere Fragen von dir erstellten Code zu exakten Fehlerbeschreibungen.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
trust114
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2015, 11:46     Titel:
  Antworten mit Zitat      
Code:
%ok...Hab jetzt folgendes:

M=[]; fid=fopen('filename','r');

for k=1:12, fgetl(fid);end     % überspring die ersten 12 Zeilen

while ~feof(fid)
   inLine=fgetl(fid)
   inNum=str2num(inLine)
   
end


Nun gibt mir Matlab alle meine Zahlen in inLine und alle meine Dezimalzahlen in inNum wieder. Alle Zahlen in inNum würde ich gerne in einer Variablen M abspeichern, aber ich weiß nicht wie.
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: 16.11.2015, 11:47     Titel: Re: Dezimalzahlen aus einer Textdatei entnehmen
  Antworten mit Zitat      
Hallo trust114,

Die Datei hat einen komplexen inneren Aufbau. Du suchst nach "allen Dezimalzahlen". Aber wie steht es mit diesen Zeilen:
Code:
% Kommentare:
% Als 1. Information wird die Plattendicke eingelesen
   0.300000

Möchtest Du nun [1.0, 0.3] bekommen? Alle Dezimalzahlen schließt die "1." ja mit ein.
Ich vermute, Du möchtest nur bestimmte Zeilen einlesen. Diese lassen sich nicht direkt in eine Matrix packen, weil die "0.3" ja z.B. nur eine Spalte hat, die anderen daten aber mit 3 Spalten vorliegen.
Zudem denke ich, dass die Zeilen "DATENBLOCK: MESSPUNKTE" usw. sehr wichtig sind und nicht einfach ignoriert werden können.

Du brauchst also eine viel komplexere Methode, um die Daten zuverlässig einzulesen als nur "alle Dezimalzahlen". Eine Lösung dafür könnte etwa 100 Zeilen benötigen. Aber für die Programmierung muss man zunächst eindeutig klären, wie das File-Format definiert ist.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2015, 12:02     Titel:
  Antworten mit Zitat      
Hi Jan S,

ja du hast Recht. Ich hätte besser schreiben sollen das ich alle Dezimalzahlen suche die sieben Nachkommastellen haben.

Ist es denn nicht möglich zwei Matrizen zu bilden?

D. h. eine nx2 Matrix für die Koordinaten und eine nx3 Matrix für die Messpunkte?

Schönen Gruß


PS: Es muss auch nicht unbedingt eine Matrix sein. Ich dachte nur es wäre am effektivsten.
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.