155GIT1 / 3. cvičení: Porovnání verzí
mBez shrnutí editace |
|||
Řádek 1: | Řádek 1: | ||
{{Geoinformatika}} | {{Geoinformatika}} | ||
{{Cvičení|155GIT1|3|Matlab - Textové řetězce, workspace, | {{Cvičení|155GIT1|3|Matlab - Textové řetězce, workspace, zápis matic do textových souborů}} | ||
== Náplň | == Náplň == | ||
# textové řetězce | # textové řetězce | ||
Řádek 10: | Řádek 10: | ||
# zápis matice do textového souboru / na standardní výstup | # zápis matice do textového souboru / na standardní výstup | ||
# formátování výstupu | # formátování výstupu | ||
== Ukázky == | == Ukázky == | ||
Řádek 134: | Řádek 133: | ||
a: 9 -> a^2: 81 | a: 9 -> a^2: 81 | ||
a: 10 -> a^2: 100 | a: 10 -> a^2: 100 | ||
</source> | </source> | ||
Řádek 182: | Řádek 138: | ||
* [[155GIT1 / 3. cvičení / Příklady|3. cvičení - příklady]] | * [[155GIT1 / 3. cvičení / Příklady|3. cvičení - příklady]] | ||
<!-- --> |
Verze z 9. 2. 2022, 22:15
Matlab - Textové řetězce, workspace, zápis matic do textových souborů
Náplň
- textové řetězce
- datové typy •
class()
- workspace •
whos
•save
,load
,clear
- manipulace se soubory viz [1] •
delete
- manipulace se soubory viz [1] •
- zápis matice do textového souboru / na standardní výstup
- formátování výstupu
Ukázky
Řetězce
t = 'muj retezec'
length(t)
t(9) = 'z'
t(5:end)
t(end+1:end+2) = '!!'
t = ['toto je ',t]
Datové typy
class(t)
A = [1 2; 3 4]
class(A)
class(1)
class(2.3)
class('1')
Formátovaný zápis matice
(zápis do souboru)
- funkce fopen() a její atributy
A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
fid = fopen('a.txt','w');
fprintf(fid,'%f %f %f %f\n',A);
fclose(fid); % zápis je proveden až při uzavření souboru
type a.txt
1.000000 5.000000 9.000000 2.000000 % ve výpisu matice je nesprávné pořadí prvků !!!
6.000000 10.000000 3.000000 7.000000
11.000000 4.000000 8.000000 12.000000
% správný výpis matice (správný rozměr a pořadí prvků)
fid = fopen('a.txt','w');
fprintf(fid,'%f %f %f %f\n',A');
fclose(fid);
type a.txt
1.000000 2.000000 3.000000 4.000000
5.000000 6.000000 7.000000 8.000000
9.000000 10.000000 11.000000 12.000000
% změna formátování
fid = fopen('a.txt','w');
fprintf(fid,'%5.1f %4.1f %4.1f %4.1f\n',A');
fclose(fid);
type a.txt
1.0 2.0 3.0 4.0
5.0 6.0 7.0 8.0
9.0 10.0 11.0 12.0
% zápis dat do již existujícího souboru
fid = fopen('a.txt','a');
fprintf(fid,'%f %f %f %f\n',A(1,:)); % totožné s fprintf(fid,'%f %f %f %f\n',A(1,:)');, neboť se vypisuje vektor
fclose(fid);
type a.txt
1.0 2.0 3.0 4.0
5.0 6.0 7.0 8.0
9.0 10.0 11.0 12.0
1.000000 2.000000 3.000000 4.000000
(zápis na standardní výstup - příkazové okno)
n = 8:10; alfa = [45.246 -349.154 1.750];
fprintf('pro bod %2i je uhel = %7.2f°\n',[n; alfa]);
(neformátovaný zápis numerických hodnot / řetězce na standardní výstup)
disp(alfa)
disp('text')
Formátování dat obecně
tt = 'moje nahodne cislo'; n = 100;
fprintf('%s (1 az %i): %i\n',tt,n,randi(n));
moje nahodne cislo (1 az 100): 31
% uložení do řetězce
r = sprintf('%s (1 az %i): %i\n',tt,n,randi(n))
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