155GIT1 / 4. cvičení: Porovnání verzí
mBez shrnutí editace |
mBez shrnutí editace |
||
(Nejsou zobrazeny 2 mezilehlé verze od stejného uživatele.) | |||
Řádek 14: | Řádek 14: | ||
<source lang=octave> | <source lang=octave> | ||
fid = fopen('pr4uk1.txt','r'); | fid = fopen('pr4uk1.txt','r'); | ||
bxy = fscanf(fid,'%f',[3 | bxy = fscanf(fid,'%f',[3 inf]); | ||
bxy = bxy' | bxy = bxy' % pro shodné rozměry matice jako v datovém souboru | ||
fclose(fid); | fclose(fid); | ||
% přeskakování položek | % přeskakování položek | ||
xy = fscanf(fid,'%*f %f %f',[2 | fid = fopen('pr4uk1.txt','r'); | ||
xy = xy'; | xy = fscanf(fid,'%*f %f %f',[2 inf]); | ||
xy = xy' | |||
fclose(fid); | |||
</source> | </source> | ||
''(čtení z řetězce)'' | ''(čtení z řetězce / z textové proměnné)'' | ||
<source lang=octave> | <source lang=octave> | ||
s = sscanf('10.2 5.222',' | s = sscanf('10.2 5.222','%f') | ||
</source> | </source> | ||
''(čtení textových souborů s hlavičkou)'' | |||
<source lang=octave> | <source lang=octave> | ||
fid = fopen(' | 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); | fclose(fid); | ||
vstup = fopen('pr4uk3.txt','r'); | |||
radek = fscanf(vstup,'%s',4) | |||
bxyh = fscanf(vstup,'%f',[4 inf])' | |||
fclose(vstup); | |||
</source> | |||
fseek(fid, | |||
=== Změna polohy kurzoru v souboru === | |||
<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; | fclose all; | ||
</source> | </source> |
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;