Indexové výrazy >> A(1,:) >> A=[1,2;3,4] >> a=a(:) >> a(3)= 8 A = a = ans = 1 2. >> a a = >> A(2,1) >> A(:,1) ans = ans = >> a(3) ans =

Podobné dokumenty
Stručný návod k programu Octave

Příklad: Řešte soustavu lineárních algebraických rovnic 10x 1 + 5x 2 +70x 3 + 5x 4 + 5x 5 = 275 2x 1 + 7x 2 + 6x 3 + 9x 4 + 6x 5 = 100 8x 1 + 9x 2 +

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

X37SGS Signály a systémy

Kreslení grafů v Matlabu

- transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' ans =

Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na

Lineární algebra s Matlabem cvičení 3

pi Ludolfovo číslo π = 3,14159 e Eulerovo číslo e = 2,71828 (lze spočítat jako exp(1)), např. je v Octave, v MATLABu tato konstanta e není

E+034 = ; = e E+034

Základy algoritmizace a programování

Příklad elektrický obvod se stejnosměrným zdrojem napětí

KTE / PPEL Počítačová podpora v elektrotechnice

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Univerzitní licence MATLABu. Pište mail na: se žádostí o nejnovější licenci MATLABu.

II. Úlohy na vložené cykly a podprogramy

Programovací jazyk Pascal

Pokračování příkladu: funkce s2cos pro výpočet y = sin 2 (x) cos(x) function y = s2cos(x) y = (sin(x).^ 2).* cos(x);

Příklady k druhému testu - Matlab

% vyhledání prvku s max. velikostí v jednotlivých sloupcích matice X

Příklady k prvnímu testu - Matlab

Interpolace a aproximace dat.

0.1 Úvod do lineární algebry

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

PPEL_3_cviceni_MATLAB.txt. % zadat 6 hodnot mezi cisly 2 a 8 % linspace (pocatek, konec, pocet bodu)

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

0.1 Úvod do lineární algebry

Tabulkový procesor. Základní rysy

Algoritmizace a programování

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Základy matematiky pro FEK

Grafické výstupy v Octave/Matlabu a GnuPlotu

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Úvod do práce s Matlabem

KTE / PPEL Počítačová podpora v elektrotechnice

PODPROGRAMY PROCEDURY A FUNKCE

1. Vsechny promenne jsou matice. Skalar je a(1,1). Vektor je bud' radkovy a(1,5) nebo sloupcovy

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Základy algoritmizace a programování

. Poté hodnoty z intervalu [ 1 4, 1 2. ] nahraďte hodnotami přirozeného logaritmu.

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

3.T Technické výpočty v Octave/Matlabu zpracování a zobrazení dat

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

PPEL_4_cviceni_MATLAB.txt. % 4. cvičení z předmětu PPEL - MATLAB. % Lenka Šroubová, ZČU, FEL, KTE %

Matematika B101MA1, B101MA2

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

1 Linearní prostory nad komplexními čísly

KTE / PPEL Počítačová podpora v elektrotechnice

Cykly a pole

Úvod do lineární algebry

Formátové specifikace formátovací řetězce

Programy na PODMÍNĚNÝ příkaz IF a CASE

LEKCE 6. Operátory. V této lekci najdete:

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

2. cvičení z ZI1 - Excel

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Sada 1 - Základy programování

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Operátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 2*2

- jak udělat konstantu long int: L long velka = 78L;

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Úvod do programování 7. hodina

Úvod do programování - Java. Cvičení č.4

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

1 Zobrazení 1 ZOBRAZENÍ 1. Zobrazení a algebraické struktury. (a) Ukažte, že zobrazení f : x

Matice. Modifikace matic eliminační metodou. α A = α a 2,1, α a 2,2,..., α a 2,n α a m,1, α a m,2,..., α a m,n

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Uspořádanou n-tici reálných čísel nazveme aritmetický vektor (vektor), ā = (a 1, a 2,..., a n ). Čísla a 1, a 2,..., a n se nazývají složky vektoru

více křivek v jednom grafu hold on přidrží aktuální graf v grafickém okně, lze nakreslit více grafů do jednoho grafického okna postupně hold off

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

Bakalářská matematika I

maticeteorie 1. Matice A je typu 2 4, matice B je typu 4 3. Jakých rozměrů musí být matice X, aby se dala provést

Operace s maticemi

Operace s maticemi. 19. února 2018

VZORCE A VÝPOČTY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen Ročník: sedmý

Základy algoritmizace a programování

Lineární algebra Operace s vektory a maticemi

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Základy maticového počtu Matice, determinant, definitnost

ALGEBRA. Téma 5: Vektorové prostory

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

Zápis programu v jazyce C#

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Transkript:

připomenutí

Indexové výrazy vektory jsou indexovány použitím jednoho indexového výrazu, matice použitím dvou nebo jednoho indexového výrazu, dvojtečka jako jediný index vytvoří sloupcový vektor spojením všech sloupců matice, z vektoru >> A=[1,2;3,4] >> A(1,:) >> a=a(:) >> a(3)= 8 A = 1 2 3 4 >> A(2,1) 1 2 >> A(:,1). a = 1 3 2 4 >> a(3) >> a a = 1 3 8 4 3 1 3 2

Speciální matice [] Prázdná matice, všechny dimenze nulové. Užitečné např. pro mazání řádků a sloupců matic. >> a=[1,2;3,4;5,6] a = 1 2 3 4 5 6 >> a(2,:)=[] a = 1 2 5 6 >>..

Speciální matice zeros(n) Nulová čtvercová matice n n. >> zeros(3) 0 0 0 0 0 0 0 0 0 zeros(m,n) Nulová matice m n. >> zeros(2,4) 0 0 0 0 0 0 0 0..

Speciální matice ones(n) Jedničková čtvercová matice n n. >> ones(3) 1 1 1 1 1 1 1 1 1 >> ones(m,n) Jedničková matice m n. >> ones(2,4) 1 1 1 1 1 1 1 1 >>.

Speciální matice eye(n) Jednotková čtvercová matice n n. >> eye(3) 1 0 0 0 1 0 0 0 1 >> eye(m,n) Jednotková matice m n. >> eye(2,4) 1 0 0 0 0 1 0 0 >>.

Speciální matice diag(v) Diagonální matice s vektorem v na hlavní diagonále. Rozměr matice je dán počtem prvků vektoru v. >> v=[1,2,3,4]; >> diag(v) 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4 >>. diag(a) Je-li prvním parametrem matice, pak funkce diag vrací prvky na hlavní (k-té vedlejší) diagonále jako sloupcový vektor. >> A=[1,2,3;4,5,6;7,8,9]; >> diag(a) 1 5 9 >> 1 4 7 2 5 8 3 6 9.

Speciální matice diag(v,k) Diagonální matice s vektorem v na k-té vedlejší diagonále >> v=[1,2,3,4]; >> diag(v,2) 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 >>. diag(a,k) >> A=[1,2,3;4,5,6;7,8,9]; >> diag(a,-1) 4 8 >> 1 4 7 2 5 8 3 6 9

Speciální matice linspace(a,b,n) Řádkový vektor s n prvky, prvky tvoří aritmetickou posloupnost v intervalu a,b pro a > b sestupná řada je-li n vynecháno, pak 100 prvků >> c=linspace(0,4,5) >> c= 0 1 2 3 4 a:krok:b - alternativa k linspace. >> c= 0:1:4 >> c= 0 1 2 3 4

Speciální matice randi(imax,m,n) Čtvercová matice m n naplněná celočíselnými náhodnými hodnotami z intervalu (0, imax). >> randi(15, 4, 2) 7 12 3 7 6 12 8 10 rand(m,n) Matice m n naplněná náhodnými hodnotami s rovnoměrným rozdělením z intervalu (0,1). Lze i jiná rozdělení (normální, Poissonovo, gamma) - randn, randp, randg a lze též ovlivnit nastavení generátoru (pseudo-)náhodných čísel..

Maticové operace A+ B A B A B A. B A / B A./ B A \ B A.\ B Součet matic. Matice musí být stejného rozměru. Rozdíl matic. Matice musí být stejného rozměru. Maticové násobení. Počet sloupců v A se musí rovnat počtu řádků v B. Násobení prvek po prvku. Matice musí být stejného rozměru. Dělení zprava. To je ekvivalentní výrazu (B T ) 1 *A T, (resp. A * B 1 ), ale je počítáno bez vyčíslování inverzní matice. Dělení zprava prvek po prvku.. Matice musí být stejného rozměru. Každý prvek A je dělen odpovídajícím prvkem B. Dělení zleva. To je ekvivalentní výrazu A 1 *B, ale je počítáno bez vyčíslování inverzní matice. Dělení zleva prvek po prvku.. Matice musí být stejného rozměru. Každý prvek B je dělen odpovídajícím prvkem A.

Příklad Řešme soustavu lineárních rovnic: V maticové podobě: tzn.. 3 1, 3 8 8 3 5 2 3 1 2 2 2 1 2 1 x x x x x x x 5 3 2 1 1 1 2 1 x x b A x b Ax 1 >> A = [1,1;-1,2];b=[3;5]; >> x=a\b x = 0.3333 2.6667 >>

Maticové operace A ^ b (a^b, a^b) A.^ b (a.^b, a.^b) Mocnina. Alespoň jeden operand musí být skalár, druhý může být skalár nebo čtvercová matice. Je-li b celočíselný nezáporný skalár a A čtvercová matice, je výsledek vypočítán opakovaným násobením. Operátor mocniny prvek po prvku A' A.' Komplexně sdružená transpozice. Pro matice s pouze reálnými prvky funguje tento operátor jako transpoziční operátor. Transpozice.

Příklad >> A=[1 3; 5 7]; >> A^2 16 24 40 64 >> A.^2 1 9 25 49 >> 2.^A 2 8 32 128 nebo A*A >> A=[1 3; 6 7] A = 1 3 6 7 >> A' 1 6 3 7 >> A.' 1 6 3 7

Zjišťování rozměrů polí size(a) length(a) vrací dvouprvkový vektor, první prvek je počet řádků, druhý počet sloupců; pro skalár jsou obě hodnoty 1 vrací jednu hodnotu - počet prvků vektoru; u matice větší z rozměrů matice >> a = 5; >> size(a) 1 1 >> length(a) 1 >> b = [1,2,3]; >> size(b) 1 3 >> length(b) 3 >> c = [1,2,3;4,5,6]; >> size(c) 2 3 >> length(c) 3

Grafy spojitých křivek Funkce plot se dvěma parametry plot(x,y) Jsou-li x i y vektory, vykreslují se prvky vektoru y oproti prvkům vektoru x. Pravděpodobně nejčastější způsob použití funkce plot. >> x = linspace(0,2*pi); >> y = sin(x); >> plot(x,y);

Grafy spojitých křivek Funkce plot se dvěma parametry plot(x,y) Je-li jeden (kterýkoliv) z parametrů matice a druhý vektor, vykresluje se vektor oproti řádkům nebo sloupcům matice (podle toho, který rozměr matice je roven počtu prvků vektoru). >> x = linspace(0,2*pi); >> y(1,:) = sin(x); >> y(2,:) = cos(x); >> plot(x,y); x je 100-prvkový vektor y je matice 2 x 100 x a/nebo y lze transponovat, výsledný graf bude vždy stejný.

Grafy spojitých křivek Funkce plot s několika páry parametrů plot(x1,y1,x2,y2,...) Chování i kombinace parametrů stejné jako při použití dvou parametrů. Umožňuje nakreslit více nezávislých grafů v jednom obrázku. >> x = linspace(0,2*pi); >> plot(x,sin(x),x,cos(x));

Grafy spojitých křivek Funkce plot s několika páry parametrů plot(x1,y1,x2,y2,...) Není nutné, aby rozsahy na ose x byly pro všechny grafy stejné. >> x1 = linspace(0,2*pi); >> x2 = linspace(-pi,pi/2); >> plot(x1,sin(x1),x2,cos(x2));

Grafy spojitých křivek Funkce plot se dvěma parametry plot(x,y) Je-li jeden z parametrů skalár, druhý parametr může být skalár nebo vektor. Matlab chápe odpovídající souřadnici jako konstantní. Vykreslují se body, k jejich "zviditelnění" je třeba změnit formát grafu (viz dále). >> a=[1,1.5,5,7,3]; >> plot(4,a,'*');

Řízení formátu grafu plot(x,y,format) plot(x1,y1,format,x2,y2,format2,...) Používají se tři parametry (resp. trojice parametrů), třetí parametr format je textový řetězec a umožňuje ovládat některé vlastnosti grafu: - -- : -. styl čáry barvu čáry typ značky Styl čáry plná čárkovaná tečkovaná čerchovaná r g b m c y k w Barva Red Green Blue Magenta Cyan Yellow Black White Není-li specifikován typ čáry, ale pouze typ značky, budou se kreslit pouze značky, nikoliv čára. Značka + o *. x square nebo s diamond nebo d ^ v > < pentagram nebo p hexagram nebo h plus kolečko hvězdička tečka křížek čtvereček kosočtverec trojúhelník pentagram hexagram

Řízení formátu grafu Matlab používá objektový model grafu, který umožňuje ovlivňovat vzhled grafu ve velmi mnoha aspektech. Ukázka možností bude ve cvičeních. V této prezentaci jsou dále uvedeny a zjednodušeně popsány pouze základní funkce pro manipulaci s grafy. Většinu dále popsaných funkcí lze přiměřeně použít pro všechny 2-D i 3-D grafy. grid on grid off Aktivuje ('on') a nebo deaktivuje ('off') kreslení mřížky. title('název') Nastaví a zobrazí titulek aktuálního grafu (text nad grafem).

Řízení formátu grafu hold on hold off Určuje, zda další příkaz (příkazy) pro kreslení povedou k vytvoření nového grafu a smazání stávajícího (hold off, defaultní chování), nebo zda se budou další grafy přidávat do grafu stávajícího (hold on). xlabel('text') ylabel('text') zlabel('text') Nastaví a zobrazí popisky os. legend('graf1','graf2',...) Nastaví a zobrazí legendu grafu. Názvy se uvádějí v pořadí, v jakém byly grafy vykreslovány.

Řízení formátu grafu subplot(m,n,p) Umožňuje umístit do jednoho obrázku několik zcela samostatných grafů s vlastními osami. Grafy jsou uspořádány do matice o m řádcích a n sloupcích, kreslení se týká grafu s indexem p (pořadové číslo brané po řádcích)..

Příklad správné zadání Chceme vykreslit průběh Rastriginovy funkce v intervalu <-20,20>. Tato funkce se používá pro testování některých optimalizačních algoritmů (při hledání globálního minima), protože její předpis je jednoduchý a funkce má velmi mnoho lokálních minim. y ax 2 b cos cx >> x = linspace(-20,20,500); >> y = x*x-20*cos(5*x);??? Error using ==> mtimes Inner matrix dimensions must agree.... >> plot(x,y);??? Undefined function or variable 'y'. >> Tato zdánlivě jednoduchá realizace je špatně, x * x bude realizováno jako maticové násobení a nelze maticově násobit řádkový vektor řádkovým vektorem.

Příklad - správné zadání Problém byl ve výpočtu druhé mocniny, která byla zapsána pomocí násobení a funkce nepředpokládala parametr typu vektor, který k vykreslení průběhu funkce potřebujeme. function y = rast(x) y = x.*x - 20*cos(5*x); end Jednoduchým a elegantním řešením (které bylo od začátku zřejmé) je použít operaci umocnění prvek po prvku. 450 x = linspace(-20,20,500); y = rast(x); plot(x,y); 400 350 300 250 200 150 100 50 0-50 -20-15 -10-5 0 5 10 15 20

Křivka v prostoru plot3(x1,y1,z1,...) plot3(x1,y1,z1,format,...) Kreslení 3-D grafu podle zadaných souřadnic. Xn, Yn a Zn jsou vektory nebo matice. Chování při kombinaci parametrů různých typů a řízení formátu grafu je stejné jako u funkce plot. >> z=[0:0.1:10*pi]; >> plot3(cos(z),sin(z),z); >> grid on; 40 30 20 10 0 1 0.5 0-0.5-1 -1-0.5 0 0.5 1

Prostorové zobrazení ploch mesh(x,y,z) meshc(x,y,z) Vykreslí drátěný model. X, Y i Z jsou matice, odpovídající prvky matic X a Y představují souřadnice, hodnotu plochy v daném bodě obsahuje odpovídající prvek matice Z. Funkce meshc navíc vykreslí izočáry v půdoryse (v rovině XY). surf(x,y,z) surfc(x,y,z) Vykreslí povrch plochy. X, Y i Z jsou matice, odpovídající prvky matic X a Y představují souřadnice, hodnotu plochy v daném bodě obsahuje odpovídající prvek matice Z. Funkce surfc navíc vykreslí izočáry v půdoryse (v rovině XY).

Prostorové zobrazení ploch [X,Y] = meshgrid(x,y) Pro kreslení prostorových ploch je zapotřebí mít k dispozici matice s hodnotami souřadnic na osách x a y, které tvoří tzv. "mřížku v půdoryse". Tyto matice pak slouží jako argument pro výraz (funkci) pro výpočet hodnoty souřadnice z. Funkce meshgrid generuje tyto matice na základě vektorů popisujících souřadnice na osách x a y. >> x=[1,2,3,4]; >> y=[4,5,6]; >> [X,Y]=meshgrid(x,y) X = 1 2 3 4 1 2 3 4 1 2 3 4 Y = 4 4 4 4 5 5 5 5 6 6 6 6 >> z Z z z 1,4 z2,4 z3,4 z4,4 1,5 z2,5 z3,5 z4,5 1,6 z2,6 z3,6 z4,6

Prostorové zobrazení ploch y=[0:10]; x=[-5:5]; [X,Y]=meshgrid(x,y); Z=10*X.^3+2.*Y.^3; subplot(2,2,1); mesh(x,y,z); title('mesh'); subplot(2,2,2); meshc(x,y,z); title('meshc'); subplot(2,2,3); surf(x,y,z); title('surf'); subplot(2,2,4); surfc(x,y,z); title('surfc'); 3 3 2 10, y x y x z -5 0 5 0 5 10-5000 0 5000 mesh -5 0 5 0 5 10-5000 0 5000 meshc -5 0 5 0 5 10-5000 0 5000 surf -5 0 5 0 5 10-5000 0 5000 surfc

Funkce disp disp(x) Výstup hodnoty X na obrazovku. X může být konstanta, výraz nebo proměnná. Zobrazená hodnota může být i pole. Funkce disp zobrazuje hodnoty podobným způsobem jako standardní výpis Matlabu, i zde lze formát ovlivnit příkazem format. Po výpisu se vždy přechází na nový řádek.

Funkce fprintf count = fprintf(fid,format,...) Výstup formátovaného textu do souboru určeného parametrem fid. Pokud je fid vynechán, směřuje výstup na obrazovku. format je textový řetězec, který je okopírován na výstup. Může obsahovat konverzní specifikace. Každá z nich postupně přísluší k jedné další hodnotě určené dalšími parametry funkce a určuje formát jejího výstupu. Návratová hodnota je počet bytů zapsaných na výstup. konverzní specifikace >> fprintf('ludolfovo číslo je %15.13f.\n',pi); Ludolfovo číslo je 3.1415926535898. >>

Funkce fprintf Konverzní specifikace %-10.2f příznak začátku povinný příznaky šířka nepovinný nepovinný přesnost nepovinný typ povinný.

Funkce fprintf Typ konverze specifikuje druh vystupující hodnoty a základní formát výstupu. %c %d %e %E %f %g %G %i %o %s %u %x %X jednotlivý znak číslo v desítkové soustavě (signed) číslo v semilogaritmickém tvaru (-1.564e+005) číslo v semilogaritmickém tvaru, E v exponentu (-1.564E+005) číslo v pevné řádové čárce automatická volba mezi %f a %e podle toho, co je pro danou hodnotu kratší automatická volba mezi %f a %E podle toho, co je pro danou hodnotu kratší totéž jako %d číslo v osmičkové soustavě (unsigned) znakový řetězec číslo v desítkové soustavě (unsigned) číslo v šestnáctkové soustavě (unsigned), písmena a až f číslo v šestnáctkové soustavě (unsigned), písmena A až F Nedesítkový výstup (typy %u, %o, %x, %X) se uplatní pouze pro celá čísla.

Funkce fprintf Příznaky specifikují zarovnání výstupu a zobrazení znaménka. - + mezera 0 zarovnání doleva ve výstupním poli (standardní je zarovnání doprava) vždy zobrazovat znaménko (standardně se zobrazuje jen minus) u nezáporných čísel vystupuje před hodnotou mezera místo znaménka plus výstup nevýznamných levostranných nul (jen při zarovnání doprava) Šířka udává minimální počet vystupujících znaků. Přesnost udává počet cifer za desetinnou tečkou pro číselné hodnoty. Pro textové řetězce (typ %s) jde o maximální počet vystupujících znaků.

Funkce fprintf >> a = 10; >> fprintf('%d\n',a); 10 >> fprintf('%4d\n',a); 10 >> fprintf('%04d\n',a); 0010 >> fprintf('%+04d\n',a); +010 >> fprintf('% 04d\n',a); 010 >> fprintf('%+09.3f\n',a); +0010.000 >> >> a = -10; >> fprintf('%d\n',a); -10 >> fprintf('%4d\n',a); -10 >> fprintf('%04d\n',a); -010 >> fprintf('%+04d\n',a); -010 >> fprintf('% 04d\n',a); -010 >> fprintf('%+09.3f\n',a); -0010.000 >>

Řídicí struktury též řídicí příkazy začínají vždy speciálním klíčovým slovem řídí průběh provádění programu lze vnořovat příkazy if, switch, while, for, break a continue příkazy if, switch, while a for ukončeny slovem end, které označuje konec řídicího příkazu seznam příkazů mezi uvozujícím a ukončujícím klíčovým slovem se nazývá tělem řídicího příkazu Tělo příkazu for for i = 1:n if i ~= 1 set(h,'visible','off'); end h = plot(x(:,i),y(:,i),'-b'); plot(x(3,i),y(3,i),'*k'); pause(0.1); end Tělo příkazu if

Příkaz if řídicí struktura alternativa (selekce) příkaz pro provedení rozhodnutí kladná větev, záporná větev + LV - + x < 7 - tělo 1 tělo 2 x = 0 x = 1 y = x+3 if podmínka tělo 1; else tělo 2; end if x < 7 x = 0; else x = 1; y = x+3; end

Příkaz if často nastane nutnost kaskádovitého řazení příkazů if lze řešit vnořováním, lepší je použít klauzuli elseif if podmínka1 tělo1 elseif podmínka2 tělo2 else tělo end Může se vyskytnout libovolný počet klauzulí elseif. Podmínky jsou testovány postupně a jakmile se nalezne prvá pravdivá, provede se odpovídající tělo. Jestliže žádná z podmínek není pravdivá a je přítomna klauzule else, provede se její tělo. V příkazu if se může vyskytnout nejvýše jedna klauzule else, a to v poslední části příkazu.

Příkaz while řídicí struktura cyklus (iterace) cyklus s podmínkou na začátku LV tělo + - i <= x y = y*i i = i+1 + - while LV tělo; end while i <= x y = y * i; i = i + 1; end

Příkaz while - příklad Výpočet faktoriálu N = input('zadej n:'); F = 1; i = 2; while i <= N F = F * i; i = i + 1; end Faktorial = F

Příkaz for řídicí struktura cyklus (iterace) cyklus s podmínkou na začátku pokud je třeba opakovat činnost pro všechny prvky nějaké datové struktury for var = výraz tělo; end kde tělo je příkaz nebo seznam příkazů, výraz je libovolný platný výraz a var může mít několik tvarů (obvykle je to jednoduchá nebo indexovaná proměnná). Přiřazovací výraz var = výraz v příkazu for pracuje tak, že se proměnné var přiřazuje postupně každý sloupec výrazu. Jestliže výraz je řada, řádkový vektor nebo skalár, hodnotou var bude skalár v každém okamžiku provádění těla cyklu. Jestliže výraz je sloupcový vektor nebo matice, var bude sloupcový vektor.

Příkaz for - příklad Výpočet faktoriálu N=4; F=1; for i=2:n F=F*i; end Faktorial=F N=4; F=1; for i=n:-1:2 F=F*i; end Faktorial=F

Příkaz switch Často je potřeba provádět různé akce v závislosti na hodnotě jedné proměnné. Je to možné zajistit kaskádou příkazů if, avšak pohodlnější je použít příkaz switch. switch výraz case hodnota1 seznam_příkazů1 case hodnota2 seznam_příkazů2... otherwise seznam_příkazů end hodnotax může být jakýkoliv výraz. Příkaz switch musí obsahovat alespoň jednu část case se seznamem příkazů. Část otherwise je volitelná (nepovinná).

Příkaz switch - příklad Příklad: vykreslí se graf funkce vybrané z menu x = linspace(0,2*pi); k = menu('sin','cos','exp'); switch k case 1 plot(x,sin(x)); case 2 plot(x,cos(x)); case 3 plot(x,exp(x)); end

Příkaz break a continue teoreticky zbytné příkazy, prakticky "se hodí" Příkaz break provádí výskok zevnitř cyklu for nebo while. Výpočet pak pokračuje prvým příkazem následujícím po cyklu. Tento příkaz může být použit pouze uvnitř těla cyklu. Příkaz continue je, stejně jako break, používán pouze uvnitř cyklů for nebo while. Na rozdíl od příkazu break, který vyskočí z cyklu, příkaz continue přeskočí zbytek těla cyklu a způsobí, že okamžitě začne další opakování těla cyklu (je-li splněna podmínka cyklu, ta se napřed znovu vyhodnotí).

Příkaz return K návratu z funkce dojde: vyčerpáním všech příkazů funkce vykonáním příkazu return Příkaz return je teoreticky nadbytečný, prakticky je ale jeho používání pohodlné. Pokud by byl return posledním příkazem funkce, nepoužívá se. function x = fmax(a,b) if a > b x = a; return end x = b; return end Tento příkaz je nutný. Pokud by měl být odstraněn, je nutno pro správné fungování funkci přepsat do některého z dříve uvedených tvarů. Tento příkaz je zbytečný a lze ho vypustit.

Uživatelem definované funkce (pro začátek bez vstupních parametrů a bez návratové hodnoty) function ahoj fprintf('ahoj!\n'); end Definice funkce >> ahoj Ahoj! >> ahoj() Ahoj! >> Volání funkce Příklad je samoúčelný, ale funguje. Pozn.: Jméno funkce musí být platné jméno (stejná pravidla jako pro jména proměnných), jméno souboru musí rovněž splňovat pravidla pro platná jména.

Uživatelem definované funkce Se vstupními parametry - obvykle je třeba předat funkci nějaké informace, tj. konkrétní hodnoty, pro které se má funkce provést function jmeno(arg_list) tělo funkce; end >> jmeno(parametry); >> seznam (formálních) parametrů funkce (je-li více parametrů, oddělují se čárkou) seznam skutečných parametrů funkce (hodnoty, pro které se má funkce provést, parametrem může být i výraz) function na2des(x) fprintf('%10.2f\n',x); end >> na2des(1.23456); 1.23 >> na2des(-15.856); -15.86 >>

Uživatelem definované funkce s návratovou hodnotou: často funkce produkuje výsledek funkce s návratovou hodnotou nemusí mít parametry, ale obvykle mívá function [ret_var] = jmeno tělo funkce; end jméno lokální proměnné, do které bude uložena návratová hodnota function [a] = sedm a = 7; end >> [x]= sedm x = 7 >>

Uživatelem definované funkce s návratovou hodnotou a vstupním parametrem: function [a] = dvakrat(x) a = 2 * x; end >> [x] = dvakrat(3) x = 6 >> Pozn.: Ve funkcích je nutné dbát na zakončování přiřazovacích příkazů středníkem, výpisy dílčích operací při provádění funkcí jsou obvykle matoucí a nežádoucí. Výjimkou jsou samozřejmě funkce, jejichž smyslem naopak je výpis něčeho na obrazovku.

Uživatelem definované funkce s více vstupními parametry a jednou návratovou hodnotou function [x] = fmax(a,b) if a > b x = a; else x = b; end end >> fmax(1,3) 3 >> function [x] = fmax(a,b) x = b; if a > b x = a; end end funkčně rovnocenná, kratší, ale méně přehledná varianta funkce

Více návratových hodnot občas je potřebné vracet z funkce více než jednu hodnotu, možné řešení je použít pole nebo datové struktury, Matlab umožňuje přímo vracet více hodnot function [ret_list] = jmeno(arg_list) tělo funkce; end čárkou oddělený seznam jmen proměnných, ve kterých budou vraceny hodnoty (formálně lze chápat jako vektor návratových hodnot).

Více návratových hodnot function [x,y] = sedm_osm x = 7; y = 8; end nargout() vestavěná funkce, při volání bez parametru (uvnitř funkce) slouží ke zjištění počtu návratových hodnot požadovaných při aktuálním volání této funkce. Funkci lze rovněž použít ke zjištění maximálního počtu návratových hodnot, které funkce může poskytnout. V tomto případě je parametrem jméno funkce. >> sedm_osm 7 >> [a,b] = sedm_osm a = 7 b = 8 >> c = sedm_osm c = 7 >> [d] = sedm_osm d = 7 >> [e,f,g] = sedm_osm??? Error using ==> sedm_osm Too many output arguments. >> nargout('sedm_osm') 2 >> O.K., není povinnost využít všechny vrácené hodnoty

Inline funkce inline umožňuje vytvořit funkci na základě textového řetězce obsahujícího funkční předpis použití pro jednodušší výpočetní funkce (typu "dosazení do vzorce") funkční předpis inline funkce může obsahovat volání dalších funkcí (běžných i inline) jmeno = inline(předpis); identifikátor (jméno) funkce textový řetězec obsahující funkční předpis >> ff=inline('2*x^2-5'); >> ff(0) -5 >> ff(10) 195 >> >> ff=inline('2*x^2-5'); >> ff ff = Inline function: ff(x) = 2*x^2-5 >>

alternativa k Inline funkci jmeno = @(proměnné) předpis; Jednotlivé proměnné jsou odděleny čárkami textový řetězec obsahující funkční předpis >> fce=@(x,y) 2*x^2-5*y; >> fce(0,1) -5 >> fce(1,2) -8 >> >> fce=@(x) 2*x^2-5*x; >> fce(1) -3 >>