
Další funkce pro manipulaci s maticemi
Dvojí úlohu má funkce diag(). Její aplikací na vektor získáme diagonální matici s argumentem na hlavní diagonále. Pokud funkci použijeme na matici, výstupem je vektor jejích diagonálních prvků. Pokud chceme pracovat s jinou diagonálou než s hlavní, můžeme použít jako druhý parametr funkce diag() číslo diagonály, přičemž kladná čísla se použijí pro diagonály nad hlavní diagonálou a záporná pod ní.
>> A = round(10*rand(5)) celočíselná matice s prvky od 0 do 10 >> x = diag(A) vektor diagonálních prvků >> B = diag(x,2) nulová matice s prvky x na 2. diagonále nad hlavní diagonálou
>> D = diag(diag(A)) diagonální matice
|
Pomocí funkcí tril() a triu() vyrobíme z dané matice dolní nebo horní trojúhelníkovou matici, přičemž je možné podobně jako u funkce diag() použít další nepovinný parametr pro posunutí diagonály.
>> L1 = tril(A) dolní trojúhelníková matice
|
Funkce max() hledá maximální prvek vektoru, pokud na výstupu uvedeme i druhý výstupní parametr, uloží se do něj index maximálního prvku. Při použití funkce max() na matici se hledají maximální prvky v jednotlivých sloupcích, do volitelného druhého výstupního parametru jsou ukládány řádkové indexy maximálního prvku v daném sloupci.
Podobně funguje funkce min().
>> [m, ind] = min(x) minimální prvek vektoru x i se svou pozicí >> A = rand(4) náhodná matice
|
U komplexních matic se maximum či minimum hledá mezi absolutními hodnotami prvků.
>> K = round(2*rand(3)) + i*round(2*rand(3)) náhodná komplexní matice s celočíselnými hodnotami reálné a imaginární části
>> absK = abs(K) absolutní hodnoty prvků komplexní matice K >> [m, r] = min(K) minima komplexní matice K a jejich řádkové indexy >> [m, ind] = max(u) v případě více shodných maximálních prvků je vybrán prvek s nižším indexem
|
K vzestupnému seřazení vektoru se používá funkce sort(), u komplexních hodnot se řazení provádí podle absolutních hodnot. Do druhého nepovinného výstupního parametru je umístěna třídicí permutace indexů. Při použití funkce sort() na matice dochází k řazení v rámci jednotlivých sloupců.
>> u(ind) odpovídá seřazenému vektoru
|
Pro sčítání a násobení prvků vektoru slouží funkce sum() a prod(). Aplikujeme-li tyto funkce na matici, příslušná operace je provedena po sloupcích.
>> f = prod(1:5) faktoriál čísla 5 f = |
Poznámka. Obecně lze spočítat příkazem prod(1:n) i pro n=0, protože součin přes prázdnou matici je roven 1.
>> f = prod(1:0) f = 1 |
Pro zjištění součtu, popř. součinu, všech prvků matice je třeba funkci sum(), popř. prod(), použít dvakrát.
>> soucet = sum(sum(A)) součet všech prvků matice A soucet = 10 |
Poznámka. Pro připomenutí, pro zjištění rozměrů matice lze použít funkci size() ve dvojí formě - s = size(A) nebo [r, sl] = size(A). Funkce length() vrací délku řádkového či sloupcového vektoru. Pokud ji aplikujeme na matici, dostáváme maximální z rozměrů; je ekvivalentní příkazu max(size(A)).