|
|
Řá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
| |