155GIT1 / 4. cvičení: Porovnání verzí
mBez shrnutí editace |
|||
(Není zobrazeno 44 mezilehlých verzí od 3 dalších uživatelů.) | |||
Řádek 1: | Řádek 1: | ||
{{Geoinformatika}} | {{Geoinformatika}} | ||
{{Cvičení|155GIT1|4|Čtení formátovaných dat z textových souborů}} | |||
{{Cvičení|155GIT1|4|Čtení | |||
== Náplň | == Náplň == | ||
# čtení dat z textového souboru do matice (ke stažení [http://athena.fsv.cvut.cz:8000/GIT1/cv4/pr4uk1.txt pr4uk1.txt], [http://athena.fsv.cvut.cz:8000/GIT1/cv4/pr4uk2.txt pr4uk2.txt], [http://athena.fsv.cvut.cz:8000/GIT1/cv4/pr4uk3.txt pr4uk3.txt], [http://athena.fsv.cvut.cz:8000/GIT1/cv4/pr4uk4.txt pr4uk4.txt]) | |||
# čtení | |||
== Ukázky == | == Ukázky == | ||
=== | === Formátované čtení dat === | ||
''(čtení z textového souboru)'' | |||
<source lang=octave> | <source lang=octave> | ||
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); | |||
fclose( | |||
fclose( | |||
</source> | </source> | ||
''(čtení z řetězce / z textové proměnné)'' | |||
<source lang=octave> | <source lang=octave> | ||
s = sscanf('10.2 5.222','%f') | |||
</source> | </source> | ||
''(čtení textových souborů s hlavičkou)'' | |||
<source lang=octave> | <source lang=octave> | ||
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); | |||
</source> | </source> | ||
Řádek 104: | Řádek 51: | ||
<source lang=octave> | <source lang=octave> | ||
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; | |||
fseek( | |||
</source> | </source> | ||
== Úlohy == | == Úlohy == | ||
* | * [[155GIT1 / 4. cvičení / Příklady|4. cvičení - příklady]] | ||
<!-- --> |
Aktuální verze z 15. 3. 2023, 22:07
Čtení formátovaných dat z textových souborů
Náplň
- č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;