Matroids Matheplanet Forum Index
Moderiert von mire2
Mathematische Software & Apps » Matlab » in Matlab mit fscanf Textfile einlesen
Autor
Universität/Hochschule in Matlab mit fscanf Textfile einlesen
Ehemaliges_Mitglied
  Themenstart: 2009-06-01

Hallo, Ich möchte in Matlab ein Textfile einlesen und ich muss das mit fscanf machen. Es sieht folgendermaßen aus: 1936 Victor F. Hess, Carl D. Anderson 1962 Lev Landau 2008 Yoichiro Nambu, Makoto Kobayashi, Toshihide Maskawa 1939 Ernest Lawrence usw. also immer Jahreszahl Namen Ich möchte nur die Jahreszahlen haben und keine Namen (in einem Vektor). Also wie sage ich fscanf auch genau das zu machen? Wenn ich zum Beispiel years=fscanf(fid,'%d'); schreibe dann ist years lediglich 1936 also das erste element. Vielen Dank im voraus! Gruß, Georg


   Profil
matph
Senior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 20.11.2006
Mitteilungen: 5506
Wohnort: A
  Beitrag No.1, eingetragen 2009-06-03

Hallo Georg, Du musst in einer Schleife jede Zeile des Files durchgehen, und falls eine Jahreszahl darin steht, kannst du mit der entsprechenden, von dir geschriebene Zeile, einlesen, sonst überspringe diese einfach. Dabei lassen sich Jahreszahlen am einfachsten in einem Array oder einer Liste speichern smile -- mfg matph [Verschoben aus Forum 'Programmiersprachen' in Forum 'Matlab' von matph]


   Profil
Ehemaliges_Mitglied
  Beitrag No.2, vom Themenstarter, eingetragen 2009-06-03

Danke, das haut hin. cool Ich poste hier mal die Lösung, falls sie jemand anders mal benötigt: \sourceon Matlab fid = fopen('nobel.txt'); years=''; names=''; while 1     year_line=fscanf(fid,'%d');%jeweilige zeile mit jahreszahlen     name_line = fgets(fid);%jeweilige zeile mit namen     if ~ischar(name_line), break, end%wenn ende erreicht ist, dann ist name==-1     years=[years;year_line];%zeilenweise hinzufügen     names=[names,name_line]; end years=fix(years);%in Integer umwandeln fclose(fid) \sourceoff Grüße, Georg


   Profil
Frasier
Senior Letzter Besuch: im letzten Monat
Dabei seit: 13.03.2009
Mitteilungen: 1031
  Beitrag No.3, eingetragen 2009-06-04

Hallo, als Alternative bietet sich textscan an \sourceon Matlab fid=fopen('nobel.txt','r'); raw=textscan(fid,'%s','delimiter','\n'); fclose(fid); jahr=str2double(raw{1}(1:2:end)) name=raw{1}(2:2:end) \sourceoff lg F.


   Profil
Folgende Antworten hat der Fragensteller vermutlich noch nicht gesehen.
Er/sie war noch nicht wieder auf dem Matheplaneten
timlie
Neu Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 02.12.2020
Mitteilungen: 1
  Beitrag No.4, eingetragen 2020-12-02

Hey ich probiere es grad auch über fscanf und einer while Schleife, aber es liest mir nur den ersten Punkt [10 10] ein und bei den anderen gibt es mir nur einen leeren Array zurück.. Weiß jmd wieso? Ich will bei folgender Datei nur die X und Y Koordinaten in einem Vektor speichern: (Die Datei wird in der Anzahl der Zeilen variieren) Hilfsfunktion Düse an G1 X10 Y10 N10 G1 X10 Y20 N20 G1 X15 Y30 Hilfsfunktion Düse aus M30 Das ist mein Code: \sourceon Matlab id = fopen('Pfad.gcode','r'); punkte=[] while 1 text = fgetl(id) p= fscanf(id,'%*s X%d Y%d')' punkte = [punkte;p] if text == -1 break end end \sourceoff Lg Tim


   Profil

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]