Lees gegevens uit tekstbestand (2024)

Lees gegevens uit tekstbestand

allemaal op pagina instorten

Syntaxis

A = fScanf (FileId, formatspec)

A = scanf (fileID, formatspec, maat)

[A, count] = fscanf (___)

Beschrijving

voorbeeld

A = fscanf (fileID,,formatspec))ReadSData van een open tekstbestand in kolomvectorAen interpret waarden in het bestand volgens het formaat dat is opgegeven doorformatspec.DeFSCANFFunctie brengt het formaat opnieuw in het hele bestand toe en positioneert de bestandsaanwijzer aan de einde-van-fileMarker.AlsFSCANFkan niet overeenkomenformatspecNaar de gegevens leest het alleen het gedeelte dat overeenkomt met en stopt met verwerking.

Het tekstbestand wordt aangegeven door de bestandsidentifier,fileID.GebruikFoppenOm het bestand te openen, de karaktercodes op te geven en defileIDwaarde.Wanneer u klaar bent met lezen, sluit u het bestand door te bellenfclose (FileId).

voorbeeld

A = fscanf (fileID,,formatspec,,siza))ReadsFile -gegevens in een array,A, met afmetingen,sizaen positioneert de bestandsaanwijzer na de laatste waarde gelezen.FSCANFpompuleertAINCOLUND BESTELLING.sizamoet een positief gehele getal zijn, hebben de vorm[M n], waarMEnNzijn positieve gehele getallen.

voorbeeld

[[A,,graaf] = fscanf (___))Bovendien retourneert het aantal velden datFSCANFleest inA. Voor numerieke gegevens is dit het aantal gelezen waarden.U kunt Thissyntax gebruiken met een van de invoerargumenten van de vorige syntaxis.

Voorbeelden

alles inklappen

Lees het bestandsinhoud in kolomvector

Open live script

Maak een voorbeeldtekstbestand dat drijvende-puntnummers bevat.

x = 100*rand(8,1);fileID = fopen('nums1.txt',,'W'); fprintf (fileid,'%4.4f \ n', x); fclose (fileID);

Bekijk de inhoud van het bestand.

typenums1.txt
81.472490.579212.698791.337663.23599.754027.849854.6882

Open het bestand voor het lezen en verkrijg de bestandsidentifier,fileID.

fileid = fopen ('nums1.txt',,'R');

Definieer het formaat van de te lezen gegevens.Gebruik'%F'om nummers van drijvende komma op te geven.

formatspec ='%F';

Lees de bestandsgegevens, vuluitvoerarray vullen,A, in kolomorder.FSCANFVerbiedt het formaat opnieuw,formatspec, over het hele bestand.

A = fScanf (FileId, formatspec)
A =8 × 181.4724 90.5792 12.6987 91.3376 63.2359 9.7540 27.8498 54.6882

Ais een kolomvector met gegevens uit het bestand.

Sluit het bestand.

fclose (fileId);

Lees het bestandsinhoud in array

Open live script

Maak een voorbeeldtekstbestand dat gehele getallen en nummers van de drijvende komma bevat.

x = 1: 1: 1; y = [x; rand (1,5)]; fileid = fopen ('nums2.txt',,'W'); fprintf (fileid,' %d %4,4f \ n', y); fclose (fileID);

Bekijk de inhoud van het bestand.

typenums2.txt
1 0.81472 0.90583 0.12704 0.91345 0.6324

Open het bestand voor het lezen en verkrijg de bestandsidentifier,fileID.

fileid = fopen ('nums2.txt',,'R');

Definieer het formaat van de te lezen gegevens en de vorm van de uitvoerarray.

formatspec =' %d %f'; sizea = [2 inf];

Lees de bestandsgegevens, vuluitvoerarray vullen,A, in kolomorder.FSCANFhergebruikt het formaat,formatspec, over het hele bestand.

A = scanf (fileID, formatspec, maat)
A =2 × 51.0000 2.0000 3.0000 4.0000 5.0000 0.8147 0.9058 0.1270 0.9134 0.6324
fclose (fileId);

Transponeer de array zodatAkomt overeen met de oriëntatie van de gegevens in het bestand.

A = a '
A =5 × 21.0000 0.8147 2.0000 0.9058 3.0000 0.1270 4,0000 0.9134 5.0000 0.6324

Sla specifieke tekens in het bestand over

Sla tot specifieke tekens in een voorbeeldbestand en retourneer alleen numerieke gegevens.

Maak een voorbeeldtekstbestand met temperatuurwaarden.

str ='78 ° C 72 ° C 64 ° C 66 ° C 49 ° C '; fileid = fopen ('temperature.dat',,'W'); fprintf (fileid,'%S', str); fclose (fileID);

Lees de cijfers in het bestand, skip de tekst over, ° C. Retourneer ook het aantal waarden datFSCANFlezen. De uitgebreide ASCII -code 176 vertegenwoordigt het diploma -teken.

fileid = fopen ('temperature.dat',,'R'); graden = char (176); [a, count] = fscanf (fileId, ['%D'graden'C']) fclose (fileID);
A = 78 72 64 66 49Count = 5

Ais een vector die de numerieke waarden in het bestand bevat.graafgeeft aan datFSCANFReadfive -waarden.

Voer argumenten in

alles inklappen

fileID-Bestandsidentifier
geheel getal

Bestandsidentifier van een open tekstbestand, opgegeven als een integer. Voordat u een bestand leest metFSCANF, je moet gebruikenFoppenOm het bestand te openen en defileID.

Gegevenstypen:dubbele

formatspec-Formaat van gegevensvelden
karaktervector|String scalair

Formaat van de gegevensvelden in het bestand, gespecificeerd als een tekenvector of tekenreeks scalair van een of meer conversiespecificaties.WanneerFSCANFReadsa -bestand probeert de gegevens te matchen met het formaat dat is opgegeven doorformatspec.

Numerieke velden

Deze tabel geeft een overzicht van de beschikbare conversiespecificaties voor numericinputs.FSCANFconverteert waarden naar hun decimale (basis 10) weergave.

Numeriek veldtypeConversie SpecificatorDetails

Geheel getal, ondertekend

%D

Basis 10

%i

De waarden in het bestand bepalen de basis:

  • De standaardinstelling is basis 10.

  • Als de eerste cijfers zijn0xof0x, dan zijn de waarden hexadecimaal (basis 16).

  • Als het eerste cijfer is0, danwaarden zijn octaal (basis 8).

%LDof%li

64-bit waarden, basis 10, 8 of 16

Geheel getal, niet ondertekend

%u

Basis 10

%O

Basis 8 (octaal)

%X

Basis 16 (hexadecimaal)

%Lu,,%LO,,%LX

64-bit waarden, basis 10, 8 of 16

Drijvend puntnummer

%F

Floating-Point Fields kunnen van het volgende bevatten (niet casusgevoelig):Inferen,,-Inf,,Naar binnen,ofIn.

%e

%G

Karaktervelden

Deze tabel geeft een overzicht van de beschikbare conversiespecificaties voor karakterinvoer.

Type karakterveldConversie SpecificatorBeschrijving

Karaktervector of string scalair

%S

Lees alle tekens met uitzondering van witte ruimtes.

%C

Lees een enkel personage, inclusief witte ruimte.
Toread meerdere tekens tegelijk, geef veldbreedte op.

Patroonafstemming

%[...]

Lees alleen karakters tussen de beugels tot het eerste toedieningskarakter of de witte ruimte.

Voorbeeld:%[MUS]leest'zomer'als'top'.

AlsformatspecBevat dan een combinatie van numerieke tekenspecificatiesFSCANFConvertSach -karakter naar zijn numerieke equivalent.Deze conversie vindt plaats zelfs wanneer het formaat expliciet alle numerieke waarden overslaat (bijvoorbeeld, bijvoorbeeldformatspecis'%*d%s').

Optionele operators

  • Velden en tekens om te negeren

    FSCANFLeest alle numerieke waarden en tekens in uw bestand in volgorde, tenzij u vertelt dat het een bepaald veld of een deel van een veld moet negeren.Voeg een asterisk in om velden over te slaan (*) Na het percentage teken (Reken). Bijvoorbeeld om gehele getallen over te slaan, specificeer%*D.

  • Veldbreedte

    Om het maximale aantal cijfers of teksttekens op te geven, voegt u een getal in na het percentage -teken.Bijvoorbeeld,%10cLees op tot 10 tekens tegelijk, inclusief witte ruimte.% 4FReadsup naar 4 cijfers tegelijk, inclusief het decimale punt.

  • Letterlijke tekst om te negeren

    FSCANFnegeer specifieke tekst toegevoegd aan deformatspecConversie Specificator.

    Voorbeeld:Niveau%uleest'Niveau 1'als1.

    Voorbeeld:%ustepleest'2step'als2.

siza-Afmetingen van output array
Inferen(standaard) |geheel getal|twee-elementen rijvector

Afmetingen van de uitvoerarray,A, gespecificeerdea'sInferen, een geheel getal of een rijvector met twee elementen.

Vorm van desizaInvoerBeschrijving
InferenLees tot het einde van het bestand.
Voor numerieke gegevens, de uitvoer,A, is een kolomvector.
Voor tekstgegevens,Ais een karaktervector.
NHoogop lezenNNumerieke waarden of character -velden.
Voor numerieke gegevens, de uitvoer,A, is een kolomvector.
Voor tekstgegevens,A, is een karaktervector.
[[m, n]Hoogop lezenM*NNumerieke waarden of tekenvelden.Nkan zijnInferen,MaarMkan niet. Het resultaat,A,isM-door-N, ingevuld in kolomorder.

Uitvoerargumenten

alles inklappen

A- Bestandsgegevens
Kolomvector |Matrix |karaktervector |tekenreeks

Bestandsgegevens, geretourneerd als een kolomvector, matrix, teken van tekens vectoror tekens array.De klasse en grootte vanAafhankelijk van deformatspecinvoer:

  • AlsformatspecBevat dan alleen numericspecificatiesAis numeriek.Als u hetsizaargumentAis een matrix van de opgegeven grootte.Anders,AISA -kolomvector.Als de invoer minder dan bevatsizawaarden danFSCANFkussensAmet nullen.

    • AlsformatspecBevat dan slechts 64-bit ondertekende gehele specificatiesAis van klasseInt64.

    • AlsformatspecBevat dan slechts 64-bit niet-ondertekende gehele specificatiesAis van klasseWintshch.

    • Anders,Ais van klassedubbele.

  • AlsformatspecBevat alleen specificaties van tekentekst (%Cof%S),DanAis een tekenreeks.Als u opgeeftsizaen de invoer bevat minder tekens danFSCANFkussensAmetChar (0).

  • AlsformatspecBevat dan een combinatie van numerieke en tekenspecificatiesAIsnumeriek, van klassedubbele, EnFSCANFConvertSach -teksttekens naar het numerieke equivalent.Dit gebeurt zelfs wanneerformatspecEXPLICITYSKips alle numerieke velden (bijvoorbeeld, bijvoorbeeld,formatspecis'%*d%s').

  • Als Matlab®kan de bestandsgegevens niet overeenkomen metformatspec,DanAkan numeriek zijn of een tekenreeks.De class vanAhangt af van de waarden dieFSCANFLees voordat het wordt gestopt met de verwerking.

graaf- Aantal gelezen tekens
scalair-

Aantal gelezen tekens, geretourneerd als een scalaire waarde.

Tips

  • Formaat specificaties voor de leesfunctiesSSCANFEnFSCANFverschillen van de formaten voor de schrijffunctiessprintfEnfprintf.De leesfuncties ondersteunen geen precisieveld.Het widthfield specificeert een minimum voor het schrijven, maar een maximum voor het lezen.

Algoritmen

Matlab leest tekens met behulp van het coderingsschema dat aan het bestand is gekoppeld.U geeft de codering op wanneer u het bestand opent met behulp van deFoppenfunctie.

Uitgebreide mogelijkheden

Versiegeschiedenis

Geïntroduceerd vóór R2006A

Breid alles uit

Deze functie ondersteunt op threa gebaseerde omgevingen.

Zie ook

Foppen|fprintf|textcan|SSCANF|fetl|fgets|freading

Onderwerpen

  • Tekstgegevensbestanden importeren met I/O op laag niveau

MATLAB -commando

U klikte op een link die overeenkomt met deze MATLAB -opdracht:

 

Voer de opdracht uit door deze in het matlab -opdrachtvenster in te voeren.Webbrowsers ondersteunen geen MATLAB -opdrachten.

Lees gegevens uit tekstbestand (1)

Selecteer een website

Kies een website om vertaalde inhoud te krijgen waar beschikbaar en zie lokale evenementen en aanbiedingen.Op basis van uw locatie raden we u aan te selecteren:.

U kunt ook een website selecteren in de volgende lijst:

Amerika

  • Latijns Amerika(Español)
  • Canada(Engels)
  • Verenigde Staten(Engels)

Europa

  • België(Engels)
  • Denemarken(Engels)
  • Deutschland(Deutsch)
  • Ruimte(Español)
  • Finland(Engels)
  • Frankrijk(Frans)
  • Ierland(Engels)
  • Italië(Italiaans)
  • Luxemburg(Engels)
  • Nederland(Engels)
  • Noorwegen(Engels)
  • Oostenrijk(Deutsch)
  • Portugal(Engels)
  • Zweden(Engels)
  • Zwitserland
    • Deutsch
    • Engels
    • Frans
  • Verenigd Koninkrijk(Engels)

Aziatisch-Pacifisch

Neem contact op met uw plaatselijke kantoor

Lees gegevens uit tekstbestand (2024)
Top Articles
Latest Posts
Article information

Author: Kareem Mueller DO

Last Updated:

Views: 5810

Rating: 4.6 / 5 (46 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Kareem Mueller DO

Birthday: 1997-01-04

Address: Apt. 156 12935 Runolfsdottir Mission, Greenfort, MN 74384-6749

Phone: +16704982844747

Job: Corporate Administration Planner

Hobby: Mountain biking, Jewelry making, Stone skipping, Lacemaking, Knife making, Scrapbooking, Letterboxing

Introduction: My name is Kareem Mueller DO, I am a vivacious, super, thoughtful, excited, handsome, beautiful, combative person who loves writing and wants to share my knowledge and understanding with you.