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

Z GeoWikiCZ
Skočit na navigaci Skočit na vyhledávání
m
Řádek 1: Řádek 1:
 
{{Geoinformatika}}
 
{{Geoinformatika}}
{{Cvičení|155GIT1|4|Čtení a zápis textových souborů}}
+
{{Cvičení|155GIT1|4|1. test - elementární operace s maticemi a vektory, čtení a formátovaný zápis matic z/do souboru}}
  
== Náplň cvičení ==
+
; Zadání testu
  
# zápis matice do textového souboru
+
* http://ocw.cvut.cz/moodle/course/view.php?id=701
# formátování výstupu
 
# čtení matice z textového souboru
 
  
== Ukázky ==
+
<!--
 
+
; Výsledky
=== Formátovaný zápis matice ===
+
* [https://docs.google.com/spreadsheets/d/1rrmAaJxME4xjSbShabIW441qhaIeZGzKOfTNyXIA1uc/edit?usp=sharing souhrnné výsledky (list 'Test 1')]
 
+
* První cvičení (12h): [http://geo102.fsv.cvut.cz/vyuka/155GIT1/2016/test1/cv1/report-test1.html Report] {{bullet}} [http://geo102.fsv.cvut.cz/vyuka/155GIT1/2016/test1/cv1/zadani.pdf Zadání]
* [http://geo.fsv.cvut.cz/user/gin/git1/matlab/matlab.pdf#38 fopen()]
+
* Druhé cvičení (14h): [ftp://athena.fsv.cvut.cz/ZFG/GIT1/test12/zadani12.pdf Zadání]
 
+
* Třetí cvičení (16h): [ftp://athena.fsv.cvut.cz/ZFG/GIT1/test13/zadani13.pdf Zadání]
<source lang=octave>
+
-->
A = rand(3,4) * 10;
 
f = fopen('a.txt', 'w');
 
fprintf(f, '%f %f %f %f\n', A);
 
fclose(f); # zápis je proveden až při uzavření souboru
 
type a.txt
 
5.272319 6.032164 4.710683 3.489846
 
3.702292 9.547577 9.105915 4.923848
 
6.948680 8.851383 7.628851 6.733618
 
#
 
# změna dimenze matice při zápisu
 
f = fopen('a1.txt', 'w');
 
fprintf(f, '%f %f %f\n', A);
 
fclose(f);
 
type a1.txt
 
5.272319 6.032164 4.710683
 
3.489846 3.702292 9.547577
 
9.105915 4.923848 6.948680
 
8.851383 7.628851 6.733618
 
#
 
# změna formátování
 
f = fopen('a2.txt', 'w');
 
fprintf(f, '%.1f %.1f %.1f %.1f\n', A);
 
fclose(f);
 
type a2.txt
 
5.3 6.0 4.7 3.5
 
3.7 9.5 9.1 4.9
 
6.9 8.9 7.6 6.7
 
#
 
# zápis dat do již existujícího souboru
 
f = fopen('a.txt', 'a');
 
fprintf(f, '%f %f %f %f\n', A(1,:));
 
fclose(f);
 
type a.txt
 
5.272319 6.032164 4.710683 3.489846
 
3.702292 9.547577 9.105915 4.923848
 
6.948680 8.851383 7.628851 6.733618
 
5.272319 3.489846 9.105915 8.851383
 
</source>
 
 
 
=== Formátování dat obecně ===
 
 
 
* viz [http://geo.fsv.cvut.cz/user/gin/git1/matlab/matlab.pdf#41 formátovací položky]
 
 
 
<source lang=octave>
 
fprintf('%s: %i\n', 'moje nahodne cislo (1 az 100)', randi(100))
 
moje nahodne cislo (1 az 100): 31
 
#
 
# uložení do řetězce
 
r = sprintf('%s: %i\n', 'moje nahodne cislo (1 az 100)', randi(100))
 
class(r)
 
ans = char
 
#
 
# příklad formátování dvou řádkových vektorů
 
a = 1:10
 
fprintf('a: %.2d -> a^2: %.3d\n', [a; a.^2])
 
a: 01 -> a^2: 001
 
a: 02 -> a^2: 004
 
a: 03 -> a^2: 009
 
a: 04 -> a^2: 016
 
a: 05 -> a^2: 025
 
a: 06 -> a^2: 036
 
a: 07 -> a^2: 049
 
a: 08 -> a^2: 064
 
a: 09 -> a^2: 081
 
a: 10 -> a^2: 100
 
#
 
fprintf('a: %2d -> a^2: %3d\n', [a; a.^2])
 
a:  1 -> a^2:  1
 
a:  2 -> a^2:  4
 
a:  3 -> a^2:  9
 
a:  4 -> a^2:  16
 
a:  5 -> a^2:  25
 
a:  6 -> a^2:  36
 
a:  7 -> a^2:  49
 
a:  8 -> a^2:  64
 
a:  9 -> a^2:  81
 
a: 10 -> a^2: 100
 
 
 
</source>
 
 
 
=== Formátované čtení matice ===
 
 
 
<source lang=octave>
 
A = magic(5)
 
f = fopen('m.txt', 'w');
 
# uložení jako sloupcový vektor
 
fprintf(f, '%f\n', A);
 
fclose(f);
 
type m.txt
 
# znovunačtení do dimenze [5x5]
 
f = fopen('m.txt', 'r');
 
B = fscanf(f, '%f', [5, inf])
 
#
 
# čtení z řetězce
 
s = sscanf('10.2 5.222', '%f %f')
 
#
 
# přeskakování položek
 
s = sscanf('10.2 5.222 4.2', '%f %*f %f')
 
fclose(f);
 
</source>
 
 
 
=== Změna polohy kurzoru v souboru ===
 
 
 
<source lang=octave>
 
f = fopen('s.txt', 'w+')
 
fprintf(f, '%f\n', [1 2; 3 4])
 
fclose(f)
 
type s.txt
 
1.000000
 
3.000000
 
2.000000
 
4.000000
 
#
 
f = fopen('s.txt')
 
a = fscanf(f, '%f', [1, inf])
 
b = fscanf(f, '%f', [2, inf])
 
fseek(f, 0, 'bof');
 
b = fscanf(f, '%f', [2, inf])
 
</source>
 
 
 
== Úlohy ==
 
 
 
* http://peso.fsv.cvut.cz/vyuka/git1/4.html
 

Verze z 1. 3. 2017, 23:06

předchozí cvičenístránky předmětudalší cvičení

1. test - elementární operace s maticemi a vektory, čtení a formátovaný zápis matic z/do souboru

Zadání testu