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 >>