155GIT1 / 4. cvičení: Porovnání verzí

Z GeoWikiCZ
mBez shrnutí editace
mBez shrnutí editace
 
(Není zobrazena jedna mezilehlá verze od stejného uživatele.)
Řádek 31: Řádek 31:
</source>
</source>


''(čtení textových souborů z hlavičkou)''
''(čtení textových souborů s hlavičkou)''


<source lang=octave>
<source lang=octave>
Řádek 51: Řádek 51:


<source lang=octave>
<source lang=octave>
  fid = fopen('s.txt','w');
  fid = fopen('pr4uk4.txt','r');
fprintf(fid,'%f\n',[1 2; 3 4]');
  uhel = fscanf(fid,'%*s %f %f %f',[3 inf])'    % čtení jen numerických hodnot
fclose(fid);
  uhelid = fscanf(fid,'%s %*s %*s %*s',[3 inf])' % kurzor je již na konci datového souboru
type s.txt
  fseek(fid,0,'bof');                           % přesun kurzoru na začátek souboru
1.000000
                                                % totožné fseek(fid,0,-1)
2.000000
  uhelid = fscanf(fid,'%s %*s %*s %*s',[3 inf])' % čtení jen (3znakových) textových identifikátorů
3.000000
4.000000
 
fid = fopen('s.txt','r');
  a = fscanf(fid,'%f',[1, inf])
  b = fscanf(fid,'%f',[2, inf]) % kurzor je již na konci datového souboru s.txt
  fseek(fid,0,'bof');           % totožně fseek(fid,0,-1); anebo frewind(fid);
  b = fscanf(fid,'%f',[2, inf])
fseek(fid,2,'bof');
c = fscanf(fid,'%f',[2, inf])
  fclose all;
  fclose all;
</source>
</source>

Aktuální verze z 15. 3. 2023, 22:07

Čtení formátovaných dat z textových souborů

Náplň

  1. čtení dat z textového souboru do matice (ke stažení pr4uk1.txt, pr4uk2.txt, pr4uk3.txt, pr4uk4.txt)

Ukázky

Formátované čtení dat

(čtení z textového souboru)

 fid = fopen('pr4uk1.txt','r');
 bxy = fscanf(fid,'%f',[3 inf]);
 bxy = bxy'                    % pro shodné rozměry matice jako v datovém souboru
 fclose(fid);

 % přeskakování položek
 fid = fopen('pr4uk1.txt','r');
 xy = fscanf(fid,'%*f %f %f',[2 inf]);
 xy = xy'
 fclose(fid);

(čtení z řetězce / z textové proměnné)

 s = sscanf('10.2 5.222','%f')

(čtení textových souborů s hlavičkou)

 fid = fopen('pr4uk2.txt','r');
 radek = fgetl(fid);          % evtl. fgets(fid) pro načtení řádku včetně znaku zalomení řádku
 rs = sscanf(radek,'%d')
 r = rs(1);
 s = rs(2);
 bxyz = fscanf(fid,'%f',[s r])'  
 fclose(fid);

 vstup = fopen('pr4uk3.txt','r');
 radek = fscanf(vstup,'%s',4)
 bxyh = fscanf(vstup,'%f',[4 inf])'
 fclose(vstup);

Změna polohy kurzoru v souboru

 fid = fopen('pr4uk4.txt','r');
 uhel = fscanf(fid,'%*s %f %f %f',[3 inf])'     % čtení jen numerických hodnot
 uhelid = fscanf(fid,'%s %*s %*s %*s',[3 inf])' % kurzor je již na konci datového souboru
 fseek(fid,0,'bof');                            % přesun kurzoru na začátek souboru
                                                % totožné fseek(fid,0,-1)
 uhelid = fscanf(fid,'%s %*s %*s %*s',[3 inf])' % čtení jen (3znakových) textových identifikátorů
 fclose all;

Úlohy