TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií MATLB: p edná²ka 2 Datové typy a struktury Zbyn k Koldovský Projekt ESF CZ.1.07/2.2.00/28.0050 Modernizace didaktických metod a inovace výuky technických p edm t.
ƒást I Datové typy a struktury
Datové typy a struktury P ehled typ : Product Help MATLAB Programming Fundamentals Classes (Data Types)
Numerické, logické a textové datové typy Numerické: p etypování pomocí int8, uint8, int16, single, double... Logické Textové: char, et zce jako pole typ char, pracujeme s ním tedy podobn jako s maticemi (spojování, indexování, atd.) >> s='ahoj' s = Ahoj >> whos s Name Size Bytes Class Attributes s 1x4 8 char >> s(2) ans = h
Numerické, logické a textové datové typy Numerické: p etypování pomocí int8, uint8, int16, single, double... Logické Textové: char, et zce jako pole typ char, pracujeme s ním tedy podobn jako s maticemi (spojování, indexování, atd.) >> s='ahoj' s = Ahoj >> whos s Name Size Bytes Class Attributes s 1x4 8 char >> s(2) ans = h
Numerické, logické a textové datové typy Numerické: p etypování pomocí int8, uint8, int16, single, double... Logické Textové: char, et zce jako pole typ char, pracujeme s ním tedy podobn jako s maticemi (spojování, indexování, atd.) >> s='ahoj' s = Ahoj >> whos s Name Size Bytes Class Attributes s 1x4 8 char >> s(2) ans = h
et zce >> s=[s ' Honzo'] % spojování s = Ahoj Honzo >> a=['ahoj';'honzo'] % chyba - ádky matice nejsou stejn velké??? Error using ==> vertcat CAT arguments dimensions are not consistent. >> a=['ahoj ';'Honzo'] a = Ahoj Honzo >> strcmp(a(1,:),'ahoj ') % porovnání et zc ans = 1
Standardní p íkazy pro práci s et zci strcmp, strfind, regexp - porovnávání, vyhledávání, regulární výrazy, parsování fprintf, sprintf - formátované výrazy upper, lower - velká/malá písmena eval - vyhodnovení výrazu
Standardní p íkazy pro práci s et zci strcmp, strfind, regexp - porovnávání, vyhledávání, regulární výrazy, parsování fprintf, sprintf - formátované výrazy upper, lower - velká/malá písmena eval - vyhodnovení výrazu
Standardní p íkazy pro práci s et zci strcmp, strfind, regexp - porovnávání, vyhledávání, regulární výrazy, parsování fprintf, sprintf - formátované výrazy upper, lower - velká/malá písmena eval - vyhodnovení výrazu
Standardní p íkazy pro práci s et zci strcmp, strfind, regexp - porovnávání, vyhledávání, regulární výrazy, parsování fprintf, sprintf - formátované výrazy upper, lower - velká/malá písmena eval - vyhodnovení výrazu
Záznamy Datový typ struct Automatická denice poloºek >> s.jmeno='tomas'; >> s.adresa='praha'; % nebo >> s=struct('jmeno','tomas','adresa','praha') s = jmeno: 'Tomas' adresa: 'Praha' Kaºdý prvek je zárove pole >> whos s Name Size Bytes Class Attributes s 1x1 268 struct
Záznamy Datový typ struct Automatická denice poloºek >> s.jmeno='tomas'; >> s.adresa='praha'; % nebo >> s=struct('jmeno','tomas','adresa','praha') s = jmeno: 'Tomas' adresa: 'Praha' Kaºdý prvek je zárove pole >> whos s Name Size Bytes Class Attributes s 1x1 268 struct
Záznamy Datový typ struct Automatická denice poloºek >> s.jmeno='tomas'; >> s.adresa='praha'; % nebo >> s=struct('jmeno','tomas','adresa','praha') s = jmeno: 'Tomas' adresa: 'Praha' Kaºdý prvek je zárove pole >> whos s Name Size Bytes Class Attributes s 1x1 268 struct
Záznamy (2) Pole záznam (databáze) >> s(2).jmeno='ales' s = 1x2 struct array with fields: jmeno adresa >> s(2) ans = jmeno: 'Ales' adresa: []
Záznamy (3) P íklad >> files=dir('*.m') files = 6x1 struct array with fields: name date bytes isdir datenum >> files(1) ans = name: 'dft.m' date: '05-XI-2009 10:59:17' bytes: 143 isdir: 0 datenum: 7.3408e+005
Záznamy (4) P íklad >> files(1:3).name ans = dft.m ans = funkcef.m ans = pokus.m >> [files(1:3).name] ans = dft.mfunkcef.mpokus.m >> strvcat(files(1:3).name) ans = dft.m funkcef.m pokus.m
Záznamy (5) P íklad >> files=dir files = 131x1 struct array with fields: name date bytes isdir datenum >> directory=files([files.isdir]) % pouze adresá e directory = 7x1 struct array with fields: name date bytes isdir datenum
Vícerozm zná pole Vícerozm rné pole typu double >> A=zeros(3,4,5,2); >> A(:,1,2,2) % indexování jako u matic P íkazy sum, mean, prod >> sum(v) % sou et 1D pole = vektoru >> sum(a) % sou et sloupc >> sum(a,n) % sou et p es n-tý rozm r % n-tý rozm r výsledku je 1 Dal²í p íkazy: squeeze, reshape, permute >> squeeze(sum(sum(a,3),2)) % odstraní 1-dimenzionální % rozm ry >> reshape(a,12,10) % zm na rozm r % po et prvk nového pole musí být stejný >> permute(a,[3 4 1 2]) % vým na po adí rozm r
Vícerozm zná pole Vícerozm rné pole typu double >> A=zeros(3,4,5,2); >> A(:,1,2,2) % indexování jako u matic P íkazy sum, mean, prod >> sum(v) % sou et 1D pole = vektoru >> sum(a) % sou et sloupc >> sum(a,n) % sou et p es n-tý rozm r % n-tý rozm r výsledku je 1 Dal²í p íkazy: squeeze, reshape, permute >> squeeze(sum(sum(a,3),2)) % odstraní 1-dimenzionální % rozm ry >> reshape(a,12,10) % zm na rozm r % po et prvk nového pole musí být stejný >> permute(a,[3 4 1 2]) % vým na po adí rozm r
Vícerozm zná pole Vícerozm rné pole typu double >> A=zeros(3,4,5,2); >> A(:,1,2,2) % indexování jako u matic P íkazy sum, mean, prod >> sum(v) % sou et 1D pole = vektoru >> sum(a) % sou et sloupc >> sum(a,n) % sou et p es n-tý rozm r % n-tý rozm r výsledku je 1 Dal²í p íkazy: squeeze, reshape, permute >> squeeze(sum(sum(a,3),2)) % odstraní 1-dimenzionální % rozm ry >> reshape(a,12,10) % zm na rozm r % po et prvk nového pole musí být stejný >> permute(a,[3 4 1 2]) % vým na po adí rozm r
Pam ová pole Pam ová pole: Cell Arrays Nejobecn j²í moºné: indexovaná pole jejichº prvky jsou libovolného typu a struktury Automatická alokace, indexování pomocí {, } >> c{1,1}=randn(3,4); >> c{1,2}=struct('jmeno','ales'); >> c{1,3}=c c = [3x4 double] [1x1 struct] {1x2 cell} Indexování: >> c(2) % vrací pam ové pole 1x1 na 2. pozici v c >> c{2} % vrací obsah 2. prvku v c >> c{1}(2,3) % (2,3)-prvek v 1. prvku c >> c{3}{1,2}.jmeno(3) % no comment ans = e Spojování: pozor na rozdíl významu {, } a [, ]
Pam ová pole Pam ová pole: Cell Arrays Nejobecn j²í moºné: indexovaná pole jejichº prvky jsou libovolného typu a struktury Automatická alokace, indexování pomocí {, } >> c{1,1}=randn(3,4); >> c{1,2}=struct('jmeno','ales'); >> c{1,3}=c c = [3x4 double] [1x1 struct] {1x2 cell} Indexování: >> c(2) % vrací pam ové pole 1x1 na 2. pozici v c >> c{2} % vrací obsah 2. prvku v c >> c{1}(2,3) % (2,3)-prvek v 1. prvku c >> c{3}{1,2}.jmeno(3) % no comment ans = e Spojování: pozor na rozdíl významu {, } a [, ]
Pam ová pole Pam ová pole: Cell Arrays Nejobecn j²í moºné: indexovaná pole jejichº prvky jsou libovolného typu a struktury Automatická alokace, indexování pomocí {, } >> c{1,1}=randn(3,4); >> c{1,2}=struct('jmeno','ales'); >> c{1,3}=c c = [3x4 double] [1x1 struct] {1x2 cell} Indexování: >> c(2) % vrací pam ové pole 1x1 na 2. pozici v c >> c{2} % vrací obsah 2. prvku v c >> c{1}(2,3) % (2,3)-prvek v 1. prvku c >> c{3}{1,2}.jmeno(3) % no comment ans = e Spojování: pozor na rozdíl významu {, } a [, ]
Pam ová pole Pam ová pole: Cell Arrays Nejobecn j²í moºné: indexovaná pole jejichº prvky jsou libovolného typu a struktury Automatická alokace, indexování pomocí {, } >> c{1,1}=randn(3,4); >> c{1,2}=struct('jmeno','ales'); >> c{1,3}=c c = [3x4 double] [1x1 struct] {1x2 cell} Indexování: >> c(2) % vrací pam ové pole 1x1 na 2. pozici v c >> c{2} % vrací obsah 2. prvku v c >> c{1}(2,3) % (2,3)-prvek v 1. prvku c >> c{3}{1,2}.jmeno(3) % no comment ans = e Spojování: pozor na rozdíl významu {, } a [, ]
Pam ová pole Pam ová pole: Cell Arrays Nejobecn j²í moºné: indexovaná pole jejichº prvky jsou libovolného typu a struktury Automatická alokace, indexování pomocí {, } >> c{1,1}=randn(3,4); >> c{1,2}=struct('jmeno','ales'); >> c{1,3}=c c = [3x4 double] [1x1 struct] {1x2 cell} Indexování: >> c(2) % vrací pam ové pole 1x1 na 2. pozici v c >> c{2} % vrací obsah 2. prvku v c >> c{1}(2,3) % (2,3)-prvek v 1. prvku c >> c{3}{1,2}.jmeno(3) % no comment ans = e Spojování: pozor na rozdíl významu {, } a [, ]
ƒást II Programování skript a funkcí
Skript ASCII soubory s koncovkou *.m Skript nemá vlastní datový segment Workspace, pracujeme v základním Base Globální prom nné: deklarace pomocí p íkazu global
Skript ASCII soubory s koncovkou *.m Skript nemá vlastní datový segment Workspace, pracujeme v základním Base Globální prom nné: deklarace pomocí p íkazu global
Skript ASCII soubory s koncovkou *.m Skript nemá vlastní datový segment Workspace, pracujeme v základním Base Globální prom nné: deklarace pomocí p íkazu global
Funkce ASCII soubory s koncovkou *.m za ínající klí ovým slovem function Vlastní datový segment Workspace (prom nné jsou lokální) Deklarace funkce, vstupních a výstupních prom nných function [a,b,c]=mojefunkce(x,y) % tady je nápov da Net eba denovat datové typy, po et vstup a výstup (deklarací si vstupy a výstupy pouze pojmenováváme, nemusí existovat, m ºe jich být víc) Po et vstupních a výstupních prom nných: prom nné nargin a nargout, pro vstup a výstup lze pouºít pam ové pole varargin, varargout Vloºené funkce: dal²ím klí ovým slovem function denujeme lokální funkci, která ale není vid t navenek
Funkce ASCII soubory s koncovkou *.m za ínající klí ovým slovem function Vlastní datový segment Workspace (prom nné jsou lokální) Deklarace funkce, vstupních a výstupních prom nných function [a,b,c]=mojefunkce(x,y) % tady je nápov da Net eba denovat datové typy, po et vstup a výstup (deklarací si vstupy a výstupy pouze pojmenováváme, nemusí existovat, m ºe jich být víc) Po et vstupních a výstupních prom nných: prom nné nargin a nargout, pro vstup a výstup lze pouºít pam ové pole varargin, varargout Vloºené funkce: dal²ím klí ovým slovem function denujeme lokální funkci, která ale není vid t navenek
Funkce ASCII soubory s koncovkou *.m za ínající klí ovým slovem function Vlastní datový segment Workspace (prom nné jsou lokální) Deklarace funkce, vstupních a výstupních prom nných function [a,b,c]=mojefunkce(x,y) % tady je nápov da Net eba denovat datové typy, po et vstup a výstup (deklarací si vstupy a výstupy pouze pojmenováváme, nemusí existovat, m ºe jich být víc) Po et vstupních a výstupních prom nných: prom nné nargin a nargout, pro vstup a výstup lze pouºít pam ové pole varargin, varargout Vloºené funkce: dal²ím klí ovým slovem function denujeme lokální funkci, která ale není vid t navenek
Funkce ASCII soubory s koncovkou *.m za ínající klí ovým slovem function Vlastní datový segment Workspace (prom nné jsou lokální) Deklarace funkce, vstupních a výstupních prom nných function [a,b,c]=mojefunkce(x,y) % tady je nápov da Net eba denovat datové typy, po et vstup a výstup (deklarací si vstupy a výstupy pouze pojmenováváme, nemusí existovat, m ºe jich být víc) Po et vstupních a výstupních prom nných: prom nné nargin a nargout, pro vstup a výstup lze pouºít pam ové pole varargin, varargout Vloºené funkce: dal²ím klí ovým slovem function denujeme lokální funkci, která ale není vid t navenek
Funkce ASCII soubory s koncovkou *.m za ínající klí ovým slovem function Vlastní datový segment Workspace (prom nné jsou lokální) Deklarace funkce, vstupních a výstupních prom nných function [a,b,c]=mojefunkce(x,y) % tady je nápov da Net eba denovat datové typy, po et vstup a výstup (deklarací si vstupy a výstupy pouze pojmenováváme, nemusí existovat, m ºe jich být víc) Po et vstupních a výstupních prom nných: prom nné nargin a nargout, pro vstup a výstup lze pouºít pam ové pole varargin, varargout Vloºené funkce: dal²ím klí ovým slovem function denujeme lokální funkci, která ale není vid t navenek
Funkce ASCII soubory s koncovkou *.m za ínající klí ovým slovem function Vlastní datový segment Workspace (prom nné jsou lokální) Deklarace funkce, vstupních a výstupních prom nných function [a,b,c]=mojefunkce(x,y) % tady je nápov da Net eba denovat datové typy, po et vstup a výstup (deklarací si vstupy a výstupy pouze pojmenováváme, nemusí existovat, m ºe jich být víc) Po et vstupních a výstupních prom nných: prom nné nargin a nargout, pro vstup a výstup lze pouºít pam ové pole varargin, varargout Vloºené funkce: dal²ím klí ovým slovem function denujeme lokální funkci, která ale není vid t navenek
Debugging a Proling Breakpointy vkládáme v programovacím editoru, z p íkazové ádky je to téº moºné (p íkaz dbstop) av²ak... Lze vkládat i podmín né breakpointy Pomáháme si p íkazy echo, disp, keyboard, return, warning,... B hem debuggingu m ºeme d lat prakticky cokoliv: sledovat a m nit prom nné, vytvá et nové, volat p íkazy... zde je zásadní výhoda toho, ºe Matlab je interpret nikoliv p eklada Proler slouºí k m ení asové náro nosti profile clear profile on mujskript mojefunkce(x,y) profile off profile report
Debugging a Proling Breakpointy vkládáme v programovacím editoru, z p íkazové ádky je to téº moºné (p íkaz dbstop) av²ak... Lze vkládat i podmín né breakpointy Pomáháme si p íkazy echo, disp, keyboard, return, warning,... B hem debuggingu m ºeme d lat prakticky cokoliv: sledovat a m nit prom nné, vytvá et nové, volat p íkazy... zde je zásadní výhoda toho, ºe Matlab je interpret nikoliv p eklada Proler slouºí k m ení asové náro nosti profile clear profile on mujskript mojefunkce(x,y) profile off profile report
Debugging a Proling Breakpointy vkládáme v programovacím editoru, z p íkazové ádky je to téº moºné (p íkaz dbstop) av²ak... Lze vkládat i podmín né breakpointy Pomáháme si p íkazy echo, disp, keyboard, return, warning,... B hem debuggingu m ºeme d lat prakticky cokoliv: sledovat a m nit prom nné, vytvá et nové, volat p íkazy... zde je zásadní výhoda toho, ºe Matlab je interpret nikoliv p eklada Proler slouºí k m ení asové náro nosti profile clear profile on mujskript mojefunkce(x,y) profile off profile report
Debugging a Proling Breakpointy vkládáme v programovacím editoru, z p íkazové ádky je to téº moºné (p íkaz dbstop) av²ak... Lze vkládat i podmín né breakpointy Pomáháme si p íkazy echo, disp, keyboard, return, warning,... B hem debuggingu m ºeme d lat prakticky cokoliv: sledovat a m nit prom nné, vytvá et nové, volat p íkazy... zde je zásadní výhoda toho, ºe Matlab je interpret nikoliv p eklada Proler slouºí k m ení asové náro nosti profile clear profile on mujskript mojefunkce(x,y) profile off profile report
Debugging a Proling Breakpointy vkládáme v programovacím editoru, z p íkazové ádky je to téº moºné (p íkaz dbstop) av²ak... Lze vkládat i podmín né breakpointy Pomáháme si p íkazy echo, disp, keyboard, return, warning,... B hem debuggingu m ºeme d lat prakticky cokoliv: sledovat a m nit prom nné, vytvá et nové, volat p íkazy... zde je zásadní výhoda toho, ºe Matlab je interpret nikoliv p eklada Proler slouºí k m ení asové náro nosti profile clear profile on mujskript mojefunkce(x,y) profile off profile report
Cykly Cyklus for for i=ind % ind obsahuje hodnoty, které i nabývá % asto nap 1:50 % t lo cyklu end Lze m nit ídící prom nnou v pr b hu, av²ak v dal²ím pr b hu bude mít dal²í hodnotu z pole ind Cyklus while while podminka % podminka je logická hodnota % nap. a>1 % t lo cyklu end
Cykly Cyklus for for i=ind % ind obsahuje hodnoty, které i nabývá % asto nap 1:50 % t lo cyklu end Lze m nit ídící prom nnou v pr b hu, av²ak v dal²ím pr b hu bude mít dal²í hodnotu z pole ind Cyklus while while podminka % podminka je logická hodnota % nap. a>1 % t lo cyklu end
Podmínky Podmínka if podminka % t lo podmínky elseif podminka2 % t lo druhé podmínky elseif podminka3 % t lo t etí podmínky else % jinak end
Podmínka switch Podmínka switch switch vyraz case 1 % t lo p íkazu case {2, 3, 4} % t lo p íkazu otherwise % jinak % t lo p íkazu end Provádí se pouze pravdivé p ípady, není t eba ukon ovat p ípady pomocí break jako je tomu nap. v C++
Standardní matematické funkce v Matlabu Standardní názvy: sin, cos, tan, log, exp, abs, sign... Funkce fungují obecn v komplexním oboru Funkce se standardn aplikují po prvcích, výstup má stejný rozm r jako vstup Zaokrouhlování: round, ceil, fix, floor Maximální a minimální prvek a medián: max, mix, median. V p ípad vektoru je jedno je-li sloupcový nebo ádkový, u matic fungují po sloupcích, dále viz help. Neslouºí k hledání minim a maxim funkcí (Optimization Toolbox)! T íd ní: sort
Standardní matematické funkce v Matlabu Standardní názvy: sin, cos, tan, log, exp, abs, sign... Funkce fungují obecn v komplexním oboru Funkce se standardn aplikují po prvcích, výstup má stejný rozm r jako vstup Zaokrouhlování: round, ceil, fix, floor Maximální a minimální prvek a medián: max, mix, median. V p ípad vektoru je jedno je-li sloupcový nebo ádkový, u matic fungují po sloupcích, dále viz help. Neslouºí k hledání minim a maxim funkcí (Optimization Toolbox)! T íd ní: sort
Standardní matematické funkce v Matlabu Standardní názvy: sin, cos, tan, log, exp, abs, sign... Funkce fungují obecn v komplexním oboru Funkce se standardn aplikují po prvcích, výstup má stejný rozm r jako vstup Zaokrouhlování: round, ceil, fix, floor Maximální a minimální prvek a medián: max, mix, median. V p ípad vektoru je jedno je-li sloupcový nebo ádkový, u matic fungují po sloupcích, dále viz help. Neslouºí k hledání minim a maxim funkcí (Optimization Toolbox)! T íd ní: sort
Standardní matematické funkce v Matlabu Standardní názvy: sin, cos, tan, log, exp, abs, sign... Funkce fungují obecn v komplexním oboru Funkce se standardn aplikují po prvcích, výstup má stejný rozm r jako vstup Zaokrouhlování: round, ceil, fix, floor Maximální a minimální prvek a medián: max, mix, median. V p ípad vektoru je jedno je-li sloupcový nebo ádkový, u matic fungují po sloupcích, dále viz help. Neslouºí k hledání minim a maxim funkcí (Optimization Toolbox)! T íd ní: sort
Standardní matematické funkce v Matlabu Standardní názvy: sin, cos, tan, log, exp, abs, sign... Funkce fungují obecn v komplexním oboru Funkce se standardn aplikují po prvcích, výstup má stejný rozm r jako vstup Zaokrouhlování: round, ceil, fix, floor Maximální a minimální prvek a medián: max, mix, median. V p ípad vektoru je jedno je-li sloupcový nebo ádkový, u matic fungují po sloupcích, dále viz help. Neslouºí k hledání minim a maxim funkcí (Optimization Toolbox)! T íd ní: sort
Standardní matematické funkce v Matlabu Standardní názvy: sin, cos, tan, log, exp, abs, sign... Funkce fungují obecn v komplexním oboru Funkce se standardn aplikují po prvcích, výstup má stejný rozm r jako vstup Zaokrouhlování: round, ceil, fix, floor Maximální a minimální prvek a medián: max, mix, median. V p ípad vektoru je jedno je-li sloupcový nebo ádkový, u matic fungují po sloupcích, dále viz help. Neslouºí k hledání minim a maxim funkcí (Optimization Toolbox)! T íd ní: sort
ƒást III Vektorizace a skládání výraz a p íkaz
Vektorizace a skládání výraz a p íkaz V Matlabu se obecn snaºíme vyhnout cykl m. Jsou pomalé, vytvá í zbyt n dlouhý kód, m ºe nastat problém s doalokováváním. Nap. y=[]; % prázdné pole for x=1:10000 y=[y x]; % na konec pole y p idáme prvek x end V cyklu for asto zpracováváme postupn v²echny prvky pole, tzv. po prvcích. To lze asto e²it vektorizovaným výrazem. Jiº známý p íklad z minulé p edná²ky: vyhledávání prvk pomocí logického indexování.
Vektorizace a skládání výraz a p íkaz V Matlabu se obecn snaºíme vyhnout cykl m. Jsou pomalé, vytvá í zbyt n dlouhý kód, m ºe nastat problém s doalokováváním. Nap. y=[]; % prázdné pole for x=1:10000 y=[y x]; % na konec pole y p idáme prvek x end V cyklu for asto zpracováváme postupn v²echny prvky pole, tzv. po prvcích. To lze asto e²it vektorizovaným výrazem. Jiº známý p íklad z minulé p edná²ky: vyhledávání prvk pomocí logického indexování.
Vektorizace a skládání výraz a p íkaz V Matlabu se obecn snaºíme vyhnout cykl m. Jsou pomalé, vytvá í zbyt n dlouhý kód, m ºe nastat problém s doalokováváním. Nap. y=[]; % prázdné pole for x=1:10000 y=[y x]; % na konec pole y p idáme prvek x end V cyklu for asto zpracováváme postupn v²echny prvky pole, tzv. po prvcích. To lze asto e²it vektorizovaným výrazem. Jiº známý p íklad z minulé p edná²ky: vyhledávání prvk pomocí logického indexování.
Vektorizace a skládání výraz a p íkaz P íklad: Výpo et log 10 (x) na intervalu [0.01,10] s krokem 0.01 index=0; for x=0.01:0.01:10 index=index+1; y(index)=log10(x); end versus x=0.01:0.01:10; y=log10(x); versus y=log10(0.01:0.01:10);
Vektorizace a skládání výraz a p íkaz P íklad: Výpo et sin 2 (x) cos(x) na intervalu [1,20] s krokem 0.1 index=0; for x=1:0.1:20 index=index+1; y(index)=sin(x)^2*cos(x); end versus x=1:0.1:20; y=sin(x)^2*cos(x); % toto je ²patn! y=sin(x).^2.*cos(x);
Vektorizace a skládání výraz a p íkaz P íklad: Ode tení ádkových pr m r z ádk matice A for i=1:size(a,1) for j=1:size(a,2) prumer=0; for k=1:size(a,2) prumer=prumer+a(i,k); end prumer=prumer/size(a,2); A(i,j)=A(i,j)-prumer; end end % tohle je katastrofa: zápo et nikdy! versus for k=1:size(a,1) A(k,:)=A(k,:)-mean(A(k,:)); end
Vektorizace a skládání výraz a p íkaz P íklad: Ode tení ádkových pr m r z ádk matice A A = A - repmat(mean(a,2),1,size(a,2)); % repmat vytvá í pole "dlaºdicováním" první prom nné versus A = A - mean(a,2)*ones(1,size(a,2)); % astý trik s vyuºitím maticového násobení versus A = bsxfun(@minus,a,mean(a,2)); % pouºití speciální funkce bsxfun Tento materiál vznikl v rámci projektu ESF CZ.1.07/2.2.00/28.0050 Modernizace didaktických metod a inovace výuky technických p edm t, který je spolunancován Evropským sociálním fondem a státním rozpo tem ƒr.