%matice eye(5) %jednotková matice řádu 5 zeros(5) %matice samých nul řádu 5 zeros(5,3) %matice samých nul typu 5x3 ones(5) %matice samých jedniček, volání jako u zeros - 1 nebo 2 vstupy rand(5) %matice náhodných čísel (rovnoměrné rozdělení), volání jako u zeros - 1 nebo 2 vstupy randn(5) %matice náhodných čísel (normální rozdělení), volání jako u zeros - 1 nebo 2 vstupy %další speciální matice magic(5) %magický čtverec (součty řádků, sloupců a hl./vedl. diagonály jsou shodné), funguje správně pro n>2 pascal(5) %Pascalova matice (symetrická pozitivně definitní matice, "čtvercová" část Pascalova trojúhelníku) hadamard(5) %Hadamardova matice (ortogonální matice složená z prvků 1 a -1), n=2k, k=1,2,... toeplitz(c,r) %Toeplitzova matice (má stejné "diagonály") vytvářená z 2 vektorů (co je ve sloupcích, co je v řádcích) toeplitz(r) %symetrická Toeplitzova matice, využívá se při zpracování signálů hankel(vektor) %Hankelova matice (podobná Toeplitzově, ale má stejné "vedlejší diagonály"; speciálním případem je Hilbertova matice) hilb(5) %Hilbertova matice (velmi špatně podmíněná čtvercová symetrická matice, jejíž první řádek je tvořen začátkem harmonické řady - převrácenými hodnotami přirozených čísel; další řádkymatice vznikají posunem v harmonické řadě o jednu pozici vpravo) invhilb %inverze ilbertovz matice A = [1 1/4 0; 0 4 3.11; -2 0 7]; rot90(A) %otočení matice o 90 ° (proti směru hodinových ručiček) tril(A) %dolní trojúh. matice vzniklá z A vynulováním prvků nad hl. diagonálou (bez provedení řádkových úprav!) triu(A) %horní trojúh. matice vzniklá z A vynulováním prvků pod hl. diagonálou (bez provedení řádkových úprav!) diag(v) %diagonální matice z vektoru v (je víc možností - viz help diag) nebo diag(A) vrátí diagonální prvky matice A blkdiag(A,B,...)%blokově diagonální matice ze zadaných matic fliplr(A) %převrácené pořadí sloupců matice flipud(A) %převrácené pořadí řádků matice %příklady I=eye(4) %jednotková matice řádu 4 >> M=magic(5) %magický čtverec řádu 5 >> N=zeros(3,2) %nulová matice 3x2 >> x=a+(b-a)*rand(1,10) %10 náh. čísel s rovnoměrným rozložením z intervalu [a,b] >> y=0.6+sqrt(0.1)*randn(4) %matice řádu 4, náh. čísla s normálním rozložením (stř.hodnota je 0,6 a rozptyl 0,1) %spojování matic A1 = rand(3); A2 = magic(4); A3 = [1:4; 5:5:20]; A4 = ones(6,3); A5 = [1:5]'*[2 4 6 8 10]; [A1; A4] [A4; A1] [[A4; A1] [A1; A4]] [A3; A2] %[A3 A2] chyba M1 = [2 4; -2 -1]; >> M2 = zeros(4); M3 = ones(2); M4 = 1:4; >> M5 = eye(4); M6 = 0.1:0.1:0.4; >> % spojujeme: >> M_spoj1 = [M1 M3] >> M_spoj2 = [M1; M3] >> M_spoj3 = [[M1; M3] M4'] >> M_spoj4 = [[[M1 M3]; M2; M4; M6] [M6'; M6']] %prázdné matice a rozměry matice M = [] %obě dimenze nulové (matice) d=size(M) %vrátí nejméně dvouprvkový vektor se všemi rozměry matice (řádky, sloupce,3. dimenze, 4. dimenze apod.) M = zeros(0,3) %první dimenze nulová (vektor) [m,n]=size(M) %vrátí počet řádků a sloupců matice M = 1:-3 %druhá dimenze nulová (vektor) m = size(M,1),n = size(M,2),size(A) %vrátí počet prvků matice v daném rozměru (dim=1 pro řádky, dim=2 pro sloupce) isempty(M) %vrací pravdu (1), pokud je proměnná M prázdnou maticí exist('M') %1 = existuje a je to proměnná ve workspace %přístup k prvkům matice A = [1 1/4 0; 0 4 3.11; -2 0 7]; A(3,1) % první prvek na 3.řádku A(1) % první prvek v prvním řádku A(7) % prvek v 1. řádku a ve 3. sloupci A(2,end) % výsledkem bude 3.11 A(2,end-1) % výsledkem bude 4 A(end,end) % výsledkem bude 7 A(1,:) % celý první řádek matice A A(:,2) % celý druhý sloupec matice A v = A(:) % sloupce původní matice se poskládají pod sebe A(3,[1 3]) % první a poslední prvek z třetího řádku A([2 3],[1 3]) % všechny prvky z 2. a 3. řádku a zároveň 1. a 3. sloupce A(2:3,[1 3]) % totéž B=A([end:-1:1],:) % vytvoří matici B z A prohozením pořadí jejích řádků C=rand(5,7); D=C(3:5,[1:3]) % D je "levá dolní" část matice C A(A<1) % výsledkem bude proměnná 'ans' - sloupcový vektor prvků menších než 1 A(A>2) = 7 % matice, kde všechny prvky větší než 2 budou nastaveny na 7 g = A(A<1) % vektor obsahující všechny prvky <1, rozdíl oproti g = (A<1)! h = A; h(h<1) = [] % ŘÁDKOVÝ vektor obsahující všechny prvky >=1 h = A(:); h(h<1) = [] % SLOUPCOVÝ vektor obsahující všechny prvky větší nebo rovné 1 M = magic(5); M(isprime(M)) = 0 % v matici M se všechna prvočísla přepíší na nulu M = magic(5); M(~isprime(M)) = 0 % v matici M se složená čísla přepíší na nulu %vyhledávání indexů prvků podle podmínky A = [1 1/4 0; 0 4 3.11; -2 0 7]; k = find(A==0) % vrátí sloupec s příslušnými indexy všech nul v matici A B = zeros(size(A)); B(k) = 1 % využití vektoru 'k' k = find(A==0)' % chceme-li řádkový vektor B = A; B(find(B==0)) = 100 % náhrada nul za stovky (lze vyřešit i bez funkce find) B = A; B(B==0) = 100 % totéž %změna prvku/ů matice A = [1 1/4 0; 0 4 3.11; -2 0 7]; B = A; B(B==0) = 100; C=rand(5,7); A(2,2) = 13.7 % změna 1 prvku B(:,2) = [1;1;1] % změna 2. sloupce matice B B(:,2) = ones(3,1) % totéž C(3,[1 3 5 7]) = zeros(1,4) % vynulování prvků ve 3. řádku a 1., 3., 5. a 7. sloupci C(2:4,2:6) = ones % "uprostřed" matice C budou jedničky nebo ones(3,5) %odstranění/nulování řádku/sloupce matice A = [1 1/4 0; 0 4 3.11; -2 0 7]; B = A; B(B==0) = 100; C=rand(5,7); A(2,:) = [] % odstranění 2. řádku matice A, pozor B(1,2) = [] NELZE provést!!! B(:,end) = [] % odstranění posledního sloupce matice B C(3,[1 3 5 7]) = zeros(1,4) % vynulování prvků ve 3. řádku a 1., 3., 5. a 7. sloupci C(2:4,2:6) = zeros(3,5) % "uprostřed" matice C budou jedničky E = A; E(5) = [] % vznikne řádkový vektor, srovnejte s příkazem E = A(:); E(5) = [] F = A; F([2 4 6]) = [] % vznikne řádkový vektor A(A<3) = [] % logická indexace, vznikne řádkový vektor %operátory A = [1 2 3; 1 2 3; 1 1 1]; B = [1 0 1 0; 2 1 2 1; 1 1 2 2]; C = [5 4 3; 1 -1 0]; D = [1+i 2-i 2+2i; 3 -4i 1-2i; 1 2 -5i]; E = [1 0 0; 0 2 0; 0 0 3]; F = [1 1 -1; 1 0 -1; -1 1 0]; u = [1+2i 3+i 4-2i -5i]; v = [1 5 2+2i 3]; w = [-12.4; pi/2; -3/4]; z = [2 7 -3]; %aritmetické operátory +D %unární plus -D %unární minus D' %transpozice B' %a v' %adjungování D.' %pouze B.' %transpozice %sčítání a odečítání A+D 3+A % totéž A+3 %u+A chyba nedodržení rozměrů u-2 2-u A-D %A-B chyba nedodržení rozměrů %umocnění a1^a2 A^3 % A*A*A maticově, pozor A.^3 násobení po prvcích A^0 %jednotková matice E^(-1) %inverzní matice (také inv(E)), pozor na nesingulární případy (A^(-1)), nebo nečtvercové matice (B^2) F^(-2) %pokud a2 není celé číslo, používají se vlastní čísla a vlastní vektory matice a1 (viz nápověda) %A^D pokud jsou oba operandy matice, Matlab ohlásí chybu %umocnění po prvcích A.^A A.^E %rozdíl oproti E.^A %A.^B chyba nedodržení rozměrů A.^3 A.^0 2.^A 7.^B %násobení matic C*2 % totéž 2*C C*A % A*C je rozdíl, násobení matic není komutativní, v tomto případě však chyba nedodržení rozměrů A*B % B*A chyba nedodržení rozměrů pro násobení matic, obdobně pro u*v (u*v') %násobení pop prvcích A.*C % totéž C.*A komutativnost % A.*B i B.*A chyba nedodržení rozměrů %dělení a1/a2 A/5 %resp. A*0.2 A/0 %v případě a2=0 je vypsáno varování a vrácena "matice/vektor nekonečen" B/2 u/-10 % 7/A je-li a1 skalár a a2 matice/vektor, pak operace skončí chybou "nesouhlasí rozměry" F/F %F.F-1 a1/a2 = (a2'\a1')' (viz dělení zleva) A/A %je-li a2 singulární matice, tak Matlab vypíše varování z/F %z.F-1 % A/B chyba nedodržení rozměrů (B')/F %totéž B'/F %dělení po prvcích A./3 %totéž A/3 3./A A./0 % = A/0 varování A./A F./F % děl.0 %A./B chyba nedodržení rozměrů %dělení zleva a1\a2 (řešení soustav lineárních rovnic, kdy a1=A je matice řádu n a a2=b je vektor pravých stran (typu nx1): řešení soustavy Ax=b -> příkaz x=A\b (Gaussova eliminace)) 3\2 % 2/3, protože a1\a2 = (1/a1)*a2 = a2/a1 3\A % 3^-1.*A, protože se jedná o násobení a2 převráceným číslem k a1 %A\2 chyba nedodržení rozměrů F\w % obecn2 chápáno jako a1\a2 = inv(a1)*a2 A\w % varování kvůli singularitě %F\z chyba nedodržení rozměrů %dělení zleva po prvcích A.\E % E./A, protože a1.\a2 = a2./a1, %relační operátory (stejné rozměry neo skalár, po prvcích, imaginární část se ignoruje) 3>u %A>B chyba různé rozměry A