while cyklus s podmínkou na začátku cyklus bez udání počtu opakování while podmínka příkazy; příkazy; příkazy; end; % další pokračování programu podmínka je libovolný logický výraz s logickou hodnotou 0 nebo 1 (většinou se používají relační nebo logické operátory) příkazy v těle cyklu jsou jakékoli příkazy, které se mají provádět opakovaně, je-li podmínka splněna (hodnota 1)
Speciální případy: while(1) prikazy; end while(0) prikazy; end
Speciální případy: while(1) příkazy; end Pozor: podmínka má logickou hodnotu 1, je tedy stále pravdivá, příkazy probíhají stále. Jedná se o nekonečnou smyčku, lze ji opustit jen pomocí break. while(0) příkazy; end
Speciální případy: while(1) příkazy; end Pozor: podmínka má logickou hodnotu 1, je tedy stále pravdivá, příkazy probíhají stále. Jedná se o nekonečnou smyčku, lze ji opustit jen pomocí break. while(0) příkazy; end Pozor: podmínka má logickou hodnotu 0, je tedy nepravdivá, příkazy neproběhnou.
Příklad: Funkce pro výpočet součtu prvních n přirozených čísel Přirozeným číslem se rozumí kladné celé číslo (1, 2, 3, ). function soucet_n_prirozenych(n) % n vstup (pocet prirozenych cisel pro soucet) s = 0; % soucet prvnich n prirozenych cisel % s je zatím 0, behem cyklu se zvetsi a = 1; % 1. prirozene cislo, behem cyklu se zmeni while (a <= n) s = s+a; % posupne se pricte 1,2,3,...,n a = a+1; % a se zvetsuje na 2,3,4,...,n+1 end % konec while disp(s) end % konec funkce Jiný způsob řešení daného problému na http://fyzmatik.pise.cz/706-gaussuv-soucet-aritmeticke-posloupnosti.html
Příklad: Funkce pro výpočet součtu prvních n přirozených čísel Přirozeným číslem se rozumí kladné celé číslo (1, 2, 3, ). function soucet_n_prirozenych(n) % n vstup (pocet prirozenych cisel pro soucet) s = 0; % soucet prvnich n prirozenych cisel % s je zatím 0, behem cyklu se zvetsi a = 1; % 1. prirozene cislo, behem cyklu se zmeni while (a <= n) s = s+a; % posupne se pricte 1,2,3,...,n a = a+1; % a se zvetsuje na 2,3,4,...,n+1 end disp(s) end % konec while % konec funkce a nabude hodnoty n+1, ale tato hodnota už se nepřičítá Jiný způsob řešení daného problému na http://fyzmatik.pise.cz/706-gaussuv-soucet-aritmeticke-posloupnosti.html
Pomocné příkazy pro cykly: break - ukončí běh cyklu a vyskočí z něj za jeho koncový end continue - vyvolá okamžitě další otočku cyklu (for nebo while) - obvykle se použije if a podmínka => break nebo continue Např. % a = ; b = ; while podmínka příkazy_1; if(a < 5) break; end; if (b > 30) continue; end; příkazy_2; end; % zbytek programu;
Pomocné příkazy pro cykly: break - ukončí běh cyklu a vyskočí z něj za jeho koncový end continue - vyvolá okamžitě další otočku cyklu (for nebo while) - obvykle se použije if a podmínka => break nebo continue Např. % a = ; b = ; while podmínka příkazy_1; if(a < 5) break; end; if (b > 30) continue; end; příkazy_2; end; % zbytek programu;
Pomocné příkazy pro cykly: break - ukončí běh cyklu a vyskočí z něj za jeho koncový end continue - vyvolá okamžitě další otočku cyklu (for nebo while) - obvykle se použije if a podmínka => break nebo continue Např. % a = ; b = ; while podmínka příkazy_1; if(a < 5) break; end; if (b > 30) continue; end; příkazy_2; end; % zbytek programu;
Pomocné příkazy pro cykly: break - ukončí běh cyklu a vyskočí z něj za jeho koncový end continue - vyvolá okamžitě další otočku cyklu (for nebo while) - obvykle se použije if a podmínka => break nebo continue Např. % a = ; b = ; while podmínka příkazy_1; if(a < 5) break; end; if (b > 30) continue; end; příkazy_2; end; % zbytek programu;
Příklad: vstupní parametr x se zvětší nebo zmenší na číslo 100. function sto_stop(x) while(1) % nekonečný cyklus if (x < 100) % relační operátor je menší disp(x) x=x+1; elseif (x > 100)% relační operátor je vetší disp(x) x=x-1; else disp('cislo je rovno 100 => konec!!!') break % konec běhu cyklu end % konec podmíněného příkazu if end % konec while end % konec zápisu funkce
Pokračování příkladu Volání funkce: sto_stop(87) 87 88 89 90 91 92 93 94 95 96 97 98 99 Cislo je rovno 100 => konec!!! nebo sto_stop(102) 102 101 Cislo je rovno 100 => konec!!! nebo sto_stop(100) Cislo je rovno 100 => konec!!!
switch nahradí if v případě, kdy mám více možností a if by bylo mnohokrát za sebou (speciální případ podmínky). switch výraz case případ_1 Příkaz 1_1 proběhne, příkazy_1_1; je-li výraz roven případu_1. case případ_2 Příkazy 2_1 a 2_2 proběhnou, příkazy_2_1 ; je-li výraz roven případu_2. příkazy_2_2; case {případ_3,případ_4,případ_5} příkazy_3_1; Příkazy 3_1 až 3_3 proběhnou, příkazy_3_2; je-li výraz roven případu_3, příkazy_3_3; případu_4 nebo případu_5 otherwise příkazy_jiné ; Příkazy jiné proběhnou, pokud žádný end z případů neodpovídá výrazu.
switch nahradí if v případě, kdy mám více možností a if by bylo mnohokrát za sebou (speciální případ podmínky). switch výraz case případ_1 příkazy_1_1; case případ_2 příkazy_2_1 ; příkazy_2_2; case {případ_3,případ_4,případ_5} příkazy_3_1; větvi case příkazy_3_2; zavolejte příkazy_3_3; otherwise příkazy_jiné ; Příkazy jiné proběhnou, pokud žádný end Počet příkazů ve větvi case by měl být malý, pokud potřebujete více příkazů, napište další funkci a tu ve z případů neodpovídá výrazu.
Např.: Čísla 1-7 značí dny v týdnu - pondělí až neděle volba_dne = 3; % volba_dne je řídící proměnná příkazu switch switch volba_dne case 1 příkazy pro pondělí; case 3 příkazy pro středa; case 5 příkazy pro pátek; case 6 příkazy pro sobota; otherwise příkazy pro všechny jiné varianty; end;
To je totéž jako: volba_dne = 3; % přiřazení if volba_dne == 1 % porovnání na rovnost příkazy pro pondělí; elseif volba_dne == 3 % porovnání na rovnost příkazy pro středa; elseif volba_dne == 5 % porovnání na rovnost příkazy pro pátek; elseif volba_dne == 6 % porovnání na rovnost příkazy pro sobota; else příkazy pro všechny jiné varianty; end; - což není moc přehledné lepší je zde použít switch case.
Podobně: dny v týdnu - pondělí až neděle textové řetězce musí být v apostrofech '' volba_dne = 'streda'; switch volba_dne case 'pondeli' příkazy pro pondělí; case 'streda' příkazy pro středa; case 'patek' příkazy pro pátek; case 'sobota' příkazy pro sobota; otherwise příkazy pro všechny jiné varianty; end
nebo, chci-li ošetřit dva dny najednou: volba_dne = 'streda'; switch volba_dne case 'pondeli' příkazy pro pondělí; seznam variant case 'streda' ve složených příkazy pro středa; závorkách case 'patek' {v 1, v 2, v 3,,v n } příkazy pro pátek; case {'sobota', 'nedele'} příkazy pro sobota a neděle; otherwise příkazy pro všechny jiné varianty; end
Příklad: Funkce informace o pracovní činnosti v týdnu function tyden(volba_dne) switch volba_dne case 'pondeli' disp('oddych po víkendu'); case 'utery' disp('příprava na pracovní den'); end end case 'streda' disp('pracovní den'); case 'ctvrtek' disp('oddych po pracovním dni'); case 'patek' disp('příprava na víkend'); case {'sobota', 'nedele'} disp('víkendové volno'); otherwise disp('tento den neexistuje'); % konec switch % konec funkce vstup musí být řetezec znaků Volání funkce: tyden('streda') pracovní den nebo tyden('nedele') víkendové volno nebo tyden('rijen') tento den neexistuje
Příklad: Funkce jednoduchá kalkulačka function kalkulacka(a,b,znak) % funkce ma 3 vstupy: A,B - ciselné hodnoty, znak retezec switch (znak) case '+' disp(a+b); case '-' disp(a-b); case '*' disp(a.*b); case '/' disp(a./b); case '\' disp(a.\b); otherwise disp('takto nepocitam'); end % konec switch end % konec funkce Volání funkce: kalkulacka(3,5,'+') 8 nebo kalkulacka(8,4,'/') 2 nebo kalkulacka(8,4,'\') 0.5000 nebo kalkulacka(12,7,'!') takto nepocitam
eye jednotková matice je čtvercová matice s jednotkami na hlavní diagonále (jinde jsou nuly) nebo obdélníková matice s jednotkovou submaticí, např: eye(2) 1 0 0 1 eye(2,3) 1 0 0 0 1 0 Násobení jednotkovou maticí A=[1,2;3,4] A = 1 2 3 4 B = [1:4;2:2:8] B = 1 2 3 4 2 4 6 8 A*eye(2) 1 2 3 4 B*eye(4) 1 2 3 4 2 4 6 8 eye(2)*a 1 2 3 4 eye(2)*b 1 2 3 4 2 4 6 8
ones(n) matice naplněná jedničkami o rozměru n n ones(m,n) matice naplněná jedničkami o rozměru m n K = ones(3) K = 1 1 1 1 1 1 1 1 1 L = ones(2,3) L = 1 1 1 1 1 1 ones(4,2) 1 1 1 1 1 1 1 1
ones(n) matice naplněná jedničkami o rozměru n n ones(m,n) matice naplněná jedničkami o rozměru m n K = ones(3) K = 1 1 1 1 1 1 1 1 1 L = ones(2,3) L = 1 1 1 1 1 1 ones(4,2) 1 1 1 1 1 1 1 1 Pozor: matice plná jedniček ones(2) 1 1 1 1 matice jednotková eye(2) 1 0 0 1
matice naplněná čísly 5 o rozměru 3 x 3 F = 5.*ones(3) F = 5 5 5 5 5 5 5 5 5 matice naplněná čísly 7 o rozměru 4 x 2 7.*ones(4,2) 7 7 7 7 7 7 7 7 matice naplněná čísly -4 o rozměru 2 x 3 G = -4.*ones(2,3) G = -4-4 -4-4 -4-4
zeros(n) matice naplněná nulami o rozměru n n zeros(m,n) matice naplněná nulami o rozměru m n N = zeros(3) N = 0 0 0 0 0 0 0 0 0 Q = zeros(2,3) Q = 0 0 0 0 0 0 zeros(4,2) 0 0 0 0 0 0 0 0
magic(n) "magická" matice - magický čtverec o rozměru n x n, součet prvků na diagonále je stejný jako součet prvků v jednotlivých řádcích a sloupcích matice M = magic(3) M = 8 1 6 3 5 7 4 9 2 diag(m) 8 5 2 sum(diag(m)) 15 M.' 8 3 4 1 5 9 6 7 2 sum(m) 15 15 15 sum(m.') 15 15 15
pascal(n) Pascalův trojúhelník o rozměru n x n pascal(7) 1 1 1 1 1 1 1 1 2 3 4 5 6 7 1 3 6 10 15 21 28 1 4 10 20 35 56 84 1 5 15 35 70 126 210 1 6 21 56 126 252 462 1 7 28 84 210 462 924 První řádek a první sloupec jsou tvořeny pouze číslem jedna. Druhý řádek a druhý sloupec jsou tvořeny seřazenými přirozenými čísly. Další řádky a sloupce jsou tvořeny součtem čísel vlevo a nahoře.
hilb(n) čtvercová matice o rozměru n x n, pro jejíž prvky platí: H kl = 1 / (k + l 1) kde k a l jsou indexy příslušného řádku a sloupce H = hilb(5) H = 1 1/2 1/3 1/4 1/5 1/2 1/3 1/4 1/5 1/6 1/3 1/4 1/5 1/6 1/7 1/4 1/5 1/6 1/7 1/8 1/5 1/6 1/7 1/8 1/9 Např. H 34 = 1 / (3 + 4 1) = 1/6 prvek v 3. řádku a 4. sloupci
rand pseudo-náhodné číslo v rozmezí 0 až 1 (desetinné) rand(n) matice o rozměru n x n obsahující pseudo-náhodná čísla v rozmezí 0 až 1 rand(m,n) matice s m řádky a n sloupci obsahující pseudonáhodná čísla v rozmezí 0 až 1 Např. x = rand(1,1000); y = rand(1,1000); plot(x,y,'o')
randn(n) matice o rozměru n x n obsahující pseudo-náhodné hodnoty, které jsou získány z normálního rozdělení s průměrem nula a směrodatnou odchylkou jedna. randn(m,n) matice s m řádky a n sloupci obsahující pseudonáhodné hodnoty, které jsou získány z normálního rozdělení s průměrem nula a směrodatnou odchylkou jedna. Např. xn = randn(1,1000); yn = randn(1,1000); plot(xn,yn,'o')
Jednoduchá funkce na generování pseudonáhodných čísel: function vysledek = nahoda(r, s, odkol, dokol) % r počet řádků % s počet sloupců % odkol dolní mez (od jakého čísla generujeme) % dokol horní mez (do jakého čísla generujeme) % round zaokrouhlení na nejbližší celé číslo vysledek = round(rand(r,s).* (dokol-odkol)) + odkol; end Volání funkce: M = nahoda(3, 5, -4, 4) M = -3 1-1 -4 2 4-4 3-3 1 4-2 -4 1 0
B = [x,y] B = 1 2 3 4 5 9 3 4 3 2 Složení matice ze dvou řádkových vektorů: x = [1:5] x = 1 2 3 4 5 y = [9,3,4,3,2] y = 9 3 4 3 2 ; středník A = [x;y] oddělovač řádků A = matice při zadávání 1 2 3 4 5 9 3 4 3 2
Složení matice ze dvou řádkových vektorů: x = [1:5] x = 1 2 3 4 5 y = [9,3,4,3,2] y = 9 3 4 3 2 A = [x;y] A = 1 2 3 4 5 9 3 4 3 2 ; středník oddělovač řádků matice při zadávání, čárka oddělovač položek v řádku matice B = [x,y] B = 1 2 3 4 5 9 3 4 3 2
Složení matice ze dvou sloupcových vektorů: x = [1:5]; y = [9,3,4,3,2]; x.' 1 2 3 4 5 y.' 9 3 4 3 2, čárka ; středník C = [x.',y.'] C = 1 9 2 3 3 4 4 3 5 2 D = [x.';y.'] D = 1 2 3 4 5 9 3 4 3 2
Přístup k jednotlivým prvkům matic a vektorů: - pomocí tzv. indexů (indexuje se od 1) a=[9:-1:4] a = 9 8 7 6 5 4 a(3) přístup k 3. prvku 7 b=[10;8] b = 10 8 b(2) přístup k 2. prvku 8
Přístup k jednotlivým prvkům matic a vektorů: - pomocí tzv. indexů (indexuje se od 1) a=[9:-1:4] a = 9 8 7 6 5 4 a(3) přístup k 3. prvku 7 b=[10;8] b = 10 8 b(2) přístup k 2. prvku 8 a(1,3) 7 přístup k prvku v 1. řádku, 3. sloupci b(2,1) 8 přístup k prvku ve 2. řádku, 1. sloupci
Přístup k jednotlivým prvkům matic a vektorů: - pomocí tzv. indexů (indexuje se od 1) a=[9:-1:4] a = 9 8 7 6 5 4 a(3) přístup k 3. prvku 7 b=[10;8] b = 10 8 b(2) přístup k 2. prvku 8 pokud se jedná o řádkový, resp. sloupcový vektor, nikoli o matici, lze vynechat index 1 na pozici řádku, resp. sloupce a(1,3) 7 přístup k prvku v 1. řádku, 3. sloupci b(2,1) 8 přístup k prvku ve 2. řádku, 1. sloupci
Přístup k jednotlivým prvkům matic a vektorů: a=[9:-1:4] a = 9 8 7 6 5 4 a(end) 4 b=[10;8] b = 10 8 přístup k poslednímu prvku b(end) 8
Přístup k jednotlivým prvkům matic a vektorů: a=[9:-1:4] a = 9 8 7 6 5 4 a(end) 4 b=[10;8] b = 10 8 přístup k poslednímu prvku b(end) 8
Přístup k jednotlivým prvkům matic a vektorů: D=[1:5;9,3,4,3,2;1:2:9;9:-1:5] D = 1 2 3 4 5 9 3 4 3 2 1 3 5 7 9 9 8 7 6 5 D(3,4) 7 - matice(index řádku, index sloupce) - přístup k prvku ve 3. řádku, 4. sloupci
Přístup k jednotlivým prvkům matic a vektorů: D=[1:5;9,3,4,3,2;1:2:9;9:-1:5] D = 1 2 3 4 5 9 3 4 3 2 1 3 5 7 9 9 8 7 6 5 D(3:4,1:3) 1 3 5 9 8 7 přístup k prvkům ve 3. až 4. řádku a 1. až 3. sloupci
Přístup k jednotlivým prvkům matic a vektorů: D=[1:5;9,3,4,3,2;1:2:9;9:-1:5] : - výčet, rozsah D = 3:4 % vektor 1 2 3 4 5 9 3 4 3 2 3 4 1 3 5 7 9 1:3 % vektor 9 8 7 6 5 D(3:4,1:3) 1 3 5 9 8 7 1 2 3 přístup k prvkům ve 3. až 4. řádku a 1. až 3. sloupci
Přístup k jednotlivým prvkům matic a vektorů: D=[1:5;9,3,4,3,2;1:2:9;9:-1:5] D = 1 2 3 4 5 9 3 4 3 2 1 3 5 7 9 9 8 7 6 5 D(3:4,:) 1 3 5 7 9 9 8 7 6 5 : - výčet, rozsah přístup k prvkům ve 3. až 4. řádku a všech sloupcích
Přístup k jednotlivým prvkům matic a vektorů: D=[1:5;9,3,4,3,2;1:2:9;9:-1:5] D = 1 2 3 4 5 9 3 4 3 2 1 3 5 7 9 9 8 7 6 5 D([1,3,4],3:end) 3 4 5 5 7 9 7 6 5 přístup k prvkům ve 1.,3. a 4. řádku a 3. až posledním sloupci
Přístup k jednotlivým prvkům matic a vektorů: D=[1:5;9,3,4,3,2;1:2:9;9:-1:5] D = 1 2 3 4 5 9 3 4 3 2 1 3 5 7 9 9 8 7 6 5 D([1,3,4],3:end) 3 4 5 5 7 9 7 6 5 přístup k prvkům ve 1.,3. a 4. řádku a 3. až posledním sloupci
Přístup k jednotlivým prvkům matic a vektorů: D=[1:5;9,3,4,3,2;1:2:9;9:-1:5] [1,3,4] D = % vektor 1 2 3 4 5 1 3 4 9 3 4 3 2 1 3 5 7 9 prvky odděleny 9 8 7 6 5 čárkami, vektor ohraničen [] D([1,3,4],3:end) 3 4 5 5 7 9 7 6 5 přístup k prvkům ve 1.,3. a 4. řádku a 3. až posledním sloupci
Přístup k jednotlivým prvkům matic a vektorů: D=[1:5;9,3,4,3,2;1:2:9;9:-1:5] D = 1 2 3 4 5 9 3 4 3 2 1 3 5 7 9 9 8 7 6 5 D(:,:)
Přístup k jednotlivým prvkům matic a vektorů: D=[1:5;9,3,4,3,2;1:2:9;9:-1:5] D = 1 2 3 4 5 9 3 4 3 2 1 3 5 7 9 9 8 7 6 5 D(:,:) Samotná : (rozsah, výčet) má význam (u indexů matic), že chci použít všechny možné (dostupné) hodnoty. vytiskne celou matici D, všechny řádky i sloupce
Přidání řádku k matici: D=[1:5;9,3,4,3,2;1:2:9;9:-1:5] D = 1 2 3 4 5 9 3 4 3 2 1 3 5 7 9 9 8 7 6 5 1:4 1 2 3 4 D(5,:)=[1:4] přidání 5. řádku nelze: řádek musí mít 5 sloupců (prvků) jako matice size(d) 4 5
Přidání řádku k matici: D=[1:5;9,3,4,3,2;1:2:9;9:-1:5] D = 1 2 3 4 5 9 3 4 3 2 1 3 5 7 9 9 8 7 6 5 1:5 1 2 3 4 5 D(5,:)=[1:5] přidání 5. řádku D = 1 2 3 4 5 9 3 4 3 2 1 3 5 7 9 9 8 7 6 5 1 2 3 4 5 size(d) 5 5
Nahrazení prvku v matici: D = 1 2 3 4 5 9 3 4 3 2 1 3 5 7 9 9 8 7 6 5 1 2 3 4 5 D(4,2) = 10 D = 1 2 3 4 5 9 3 4 3 2 1 3 5 7 9 9 10 7 6 5 1 2 3 4 5 nahrazení prvku (čísla 8) na 4. řádku, ve 2. sloupci číslem 10
Nahrazení prvku v matici: D = 1 2 3 4 5 9 3 4 3 2 1 3 5 7 9 9 10 7 6 5 1 2 3 4 5 D(3:5, 1:3) = 0.001 nahrazení prvků ve 3. až 5. řádku a 1. až 3. sloupci číslem 0.001 D = 1.000 2.000 3.000 4.000 5.000 9.000 3.000 4.000 3.000 2.000 0.001 0.001 0.001 7.000 9.000 0.001 0.001 0.001 6.000 5.000 0.001 0.001 0.001 4.000 5.000
Zrušení sloupce nebo řádku: D = 1.000 2.000 3.000 4.000 5.000 9.000 3.000 4.000 3.000 2.000 0.001 0.001 0.001 7.000 9.000 0.001 0.001 0.001 6.000 5.000 0.001 0.001 0.001 4.000 5.000 zrušení 4. sloupce vymažeme jej přiřazením prázdné matice [] D(:,4) = [] D = 1.000 2.000 3.000 5.000 9.000 3.000 4.000 2.000 0.001 0.001 0.001 9.000 0.001 0.001 0.001 5.000 0.001 0.001 0.001 5.000 size(d) 5 4
Přístup k prvkům matice : D = 1.000 2.000 3.000 5.000 9.000 3.000 4.000 2.000 0.001 0.001 0.001 9.000 0.001 0.001 0.001 5.000 0.001 0.001 0.001 5.000 D(:,5) přístup k prvkům ve všech řádcích a 5. sloupci nelze: 5. sloupec už neexistuje size(d) 5 4 před zrušením sloupce matice D měla 5 řádků a 5 sloupců, 4. sloupec byl odstraněn přiřazením prázdné matice [], nyní má matice D jen 4 sloupce.
5. sloupec k matici opět přidáme: D = 1.000 2.000 3.000 5.000 9.000 3.000 4.000 2.000 0.001 0.001 0.001 9.000 0.001 0.001 0.001 5.000 Měl by to být sloupcový vektor přidáváme sloupec, proto středník ; 0.001 0.001 0.001 5.000 D(:,5) = [7;9;3;2;5] D = 1.000 2.000 3.000 5.000 7.000 9.000 3.000 4.000 2.000 9.000 0.001 0.001 0.001 9.000 3.000 0.001 0.001 0.001 5.000 2.000 0.001 0.001 0.001 5.000 5.000 Stejně by se k matici přidal řádek nebo více řádků nebo více sloupců Samozřejmě se musí dodržet v přiřazení, zda dodám sloupec nebo řádky.
Zrušení sloupce nebo řádku: D = 1.000 2.000 3.000 5.000 7.000 9.000 3.000 4.000 2.000 9.000 0.001 0.001 0.001 9.000 3.000 0.001 0.001 0.001 5.000 2.000 0.001 0.001 0.001 5.000 5.000 D(3:5,1:3) = [] zrušení 3. až 5. řádku a 1. až 3. sloupce nelze: není možné vykousnout kus matice
Nahrazení řádku nebo sloupce: D = 1.000 2.000 3.000 5.000 7.000 9.000 3.000 4.000 2.000 9.000 0.001 0.001 0.001 9.000 3.000 0.001 0.001 0.001 5.000 2.000 0.001 0.001 0.001 5.000 5.000 D(:,4) = zeros(5,1) nahrazení 4. sloupce nulami D = 1.000 2.000 3.000 0.000 7.000 9.000 3.000 4.000 0.000 9.000 0.001 0.001 0.001 0.000 3.000 0.001 0.001 0.001 0.000 2.000 0.001 0.001 0.001 0.000 5.000
Nahrazení řádku nebo sloupce: D = 1.000 2.000 3.000 5.000 7.000 9.000 3.000 4.000 2.000 9.000 0.001 0.001 0.001 9.000 3.000 0.001 0.001 0.001 5.000 2.000 0.001 0.001 0.001 5.000 5.000 5 řádků, 1 sloupec => sloupcový vektor plný nul D(:,4) = zeros(5,1) nahrazení 4. sloupce nulami D = 1.000 2.000 3.000 0.000 7.000 9.000 3.000 4.000 0.000 9.000 0.001 0.001 0.001 0.000 3.000 0.001 0.001 0.001 0.000 2.000 0.001 0.001 0.001 0.000 5.000
Přidání prvku : D = 1.000 2.000 3.000 0.000 7.000 9.000 3.000 4.000 0.000 9.000 0.001 0.001 0.001 0.000 3.000 0.001 0.001 0.001 0.000 2.000 0.001 0.001 0.001 0.000 5.000 D(7,6) = -3 přidání prvku na 7. řádek a 6. sloupec D = 1.000 2.000 3.000 0.000 7.000 0.000 9.000 3.000 4.000 0.000 9.000 0.000 0.001 0.001 0.001 0.000 3.000 0.000 0.001 0.001 0.001 0.000 2.000 0.000 0.001 0.001 0.001 0.000 5.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000-3.000 Toto lze provést, zbytek matice se vyplní nulami.
D = 1.000 2.000 3.000 0.000 7.000 0.000 9.000 3.000 4.000 0.000 9.000 0.000 0.001 0.001 0.001 0.000 3.000 0.000 0.001 0.001 0.001 0.000 2.000 0.000 0.001 0.001 0.001 0.000 5.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000-3.000 size(d) 7 6 D(2:6,:) = [] D = 1.000 2.000 3.000 0.000 7.000 0.000 0.000 0.000 0.000 0.000 0.000-3.000 size(d) 2 6 zrušení 2. až 6. řádku Pozor: rozměr matice se mění! Původní matice již neexistuje.
Zrušení sloupců nebo řádků: D = 1.000 2.000 3.000 0.000 7.000 0.000 0.000 0.000 0.000 0.000 0.000-3.000 D(:,:) = [] D(m,:) = [] zrušení m-tého řádku (a všech sloupců) D(:,n) = [] zrušení n-tého sloupce (a všech řádků) zrušení celé matice, všech řádků a všech sloupců, D = vznikne prázdná matice Empty matrix
a = [23,67,56,43,31]; b = [8,3,0,23,10]; a.* b násobení prvek po prvku 184 201 0 989 310 a.' 23 67 56 43 31 b.' 8 3 0 23 10 a * b maticové násobení vektorů a, b, (1,5) * (1,5) počty řádků a sloupců nelze násobit, rozměry matic musí souhlasit, 5 1 a.' * b.' maticové násobení transponovaných (5,1) * (5,1) vektorů a.', b.' nelze násobit, rozměry matic musí souhlasit, 1 5
a = [23,67,56,43,31]; b = [8,3,0,23,10]; a.* b násobení prvek po prvku 184 201 0 989 310 Při maticovém násobení * počet sloupců první matice (zde vektoru) musí souhlasit počtem řádků matice (zde vektoru). a.' 23 67 56 43 31 b.' 8 3 0 23 10 a * b maticové násobení vektorů a, b, (1,5) * (1,5) počty řádků a sloupců nelze násobit, rozměry matic musí souhlasit, 5 1 a.' * b.' maticové násobení transponovaných (1,5) * (5,1) vektorů a.', b.' nelze násobit, rozměry matic musí souhlasit, 1 5
a = [23,67,56,43,31]; b = [8,3,0,23,10]; a.' 23 67 56 43 31 b.' 8 3 0 23 10 c = a * b.' maticové násobení (1,1) = (1,5) * (5,1) počty řádků a sloupců c = 1684 lze násobit maticově, 5 = 5, a má 5 sloupců a b.' má 5 řádek (je to sloupec), výsledek má 1 řádek a 1 sloupec d = a.' * b maticové násobení (5,5) = (5,1) * (1,5) počty řádků a sloupců d = 184 69 0 529 230 536 201 0 1541 670 448 168 0 1288 560 344 129 0 989 430 248 93 0 713 310 lze násobit maticově, 1 = 1, a.' má 1 sloupec a b má 1 řádek, výsledek má 5 řádků a 5 sloupců
D=[1,2,3;4,5,6;7,8,-9] D = 1 2 3 4 5 6 7 8-9 diag(d) vypíše hlavní diagonálu matice D (hlavní diagonála je tvořena všemi prvky D mn, kde m = n.) diag(d) 1 prvek D 11 5 prvek D 22-9 prvek D 33 det(d) vypočte determinant matice D (jen pro čtvercové matice). Determinantem čtvercové matice řádu n nazýváme součet všech součinů n prvků této matice takových, že v žádném z uvedených součinů se nevyskytují dva prvky z téhož řádku ani z téhož sloupce. det(d) 54
A=[3,4;2,-5] A = + 3 4 2-5 Determinant matice det(a) = 3*(-5) 4*2 = -23 det(a) -23 B=[1,1;2,2] B = + 1 1 2 2 Determinant matice det(b) = 1*2 1*2 = 0 det(b) 0 Matice, která má determinant rovný nule se nazývá singulární. Matice, jejíž determinant je nenulový, se nazývá regulární. Je-li matice koeficientů soustavy lineárních algebraických rovnic regulární, potom má soustava právě jedno řešení.
Grafické znázornění výpočtu determinantu matice Sarrusovým pravidlem pro matici rozměru 3x3