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

Z GeoWikiCZ
mBez shrnutí editace
mBez shrnutí editace
 
(Není zobrazeno 29 mezilehlých verzí od 2 dalších uživatelů.)
Řádek 1: Řádek 1:
{{Geoinformatika}}
{{Geoinformatika}}
{{Cvičení|155GIT1|4|1. test - elementární operace s maticemi a vektory, čtení a formátovaný zápis matic z/do souboru}}
{{Cvičení|155GIT1|4|Čtení formátovaných dat z textových souborů}}


; Zadání testu
== Náplň ==


* http://moodle-vyuka.cvut.cz/course/view.php?id=183
# č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])


; Výsledky
== Ukázky ==


* [https://docs.google.com/spreadsheets/d/11YUf5nufMhaF97yEnjm9C0dGSEeArLmEbG99ngSA-jc/edit#gid=505373907 Souhrnné výsledky]
=== Formátované čtení dat ===


<!--
''(čtení z textového souboru)''
* [https://docs.google.com/spreadsheets/d/155h5xajDWFbfm_8Rwggaox-wBF7Cn_5vHFNI-W-SVbs/edit?usp=sharing Souhrnné výsledky]
 
* Cvičení středa: [http://geo102.fsv.cvut.cz/vyuka/155GIT1/2017/test1/cv1/report-test1.html Report]
<source lang=octave>
[http://geo102.fsv.cvut.cz/vyuka/155GIT1/2016/test1/cv1/zadani.pdf Zadání]
fid = fopen('pr4uk1.txt','r');
* Druhé cvičení (14h): [ftp://athena.fsv.cvut.cz/ZFG/GIT1/test12/zadani12.pdf Zadání]
bxy = fscanf(fid,'%f',[3 inf]);
* Třetí cvičení (16h): [ftp://athena.fsv.cvut.cz/ZFG/GIT1/test13/zadani13.pdf Zadání]
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);
</source>
 
''(čtení z řetězce / z textové proměnné)''
 
<source lang=octave>
s = sscanf('10.2 5.222','%f')
</source>
 
''(čtení textových souborů s hlavičkou)''
 
<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>
 
=== 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;
</source>
 
== Ú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ň

  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