Karel Bittner Bittner@humusoft.cz Podpora výuky Mechatroniky Liberec, 20.června 2006 Karel Bittner Bittner@humusoft.cz
MATLAB Symbolic Math Toolbox Simulink
MATLAB Demo – příklady >> wrldtrv >> truss >> makevase
Symbolic Math Toolbox Začleňuje symbolické výpočty do prostředí MATLABu
Simulink Regulace teploty v domě Regulace vodní hladiny v nádrži Simulace automobilových systémů
MATLAB R2006a Podle schematu jsou MATLAB a jeho nadstavby rozděleny do 3 základních oblastí využití. Jádrem technických výpočtů je ML se zaměřením na matematické výpočty a optimalizaci, na statistiku a analýzu dat a na práci s databázemi. Do této oblasti spadá také rozšiřování hotových aplikací ML. Do druhé oblasti použití ML a jeho nadstaveb spadají specifické a profesně zaměřené aplikace pro řídící systémy, zpracování signálu a komunikaci, zpracování obrazu, měření, výpočetní biologie a finančnictví Asi nejrozsáhlejší oblastí pro využití ML a jeho nadstaveb jsou produkty svázané se Simulinkem, nejrozsáhlejší nadstavbou ML. Většina produktů spojených se Simulinkem slouží k modelování a k simulaci systémů popsaných aktivními schematy, která popisují např. různé dynamické systémy, z oblasti řízení nebo fyzikálních systémů (např.strojírenských systémů), zpracování obrazu nebo generování kódu pro embeded systémy.
HUMUSOFT s.r.o. Založeno v r. 1991, sídlo v Praze Produkty a služby v oblasti technických výpočtů, řídicí techniky a simulace MATLAB, Simulink,Blocksety, Toolboxy inženýrské výpočty, simulace dynamických systémů The MathWorks, Inc. COMSOL Multiphysics Simulace fyzikálních dějů, PDE a FEM analýza Comsol AB dSPACE - vývojové systémy dSPACE GmbH. WITNESS interaktivní simulace a optimalizace podnikových procesů Lanner Group, Ltd. Vývoj vlastního software & hardware Virtual Reality Toolbox, Real Time Toolbox Měřicí karty Modely pro výuku teorie řízení
MATLAB R2006a Co je MATLAB ? K čemu lze program využívat ? výkonné prostředí pro technické výpočty je určen pro "běžné" uživatele i pro profesní specialisty integruje do jednoho celku import a export dat, výpočty, zobrazení výsledků, automatizaci rutinních výpočtů, programovací jazyk a nástroje pro tvorbu uživatelských aplikací obsahuje hotové matematické a geometrické funkce k okamžitému použití argumenty funkcí mohou být skalární hodnoty nebo pole hodnot K čemu lze program využívat ? rutinní výpočty z příkazové řádky stylem "vypočti a nakresli" automatizace rutinních výpočtů programování specifických aplikací simulace a modelování v různých oblastech lidské činnosti
MATLAB R2006a Komunikace s MATLABem uživatelské prostředí příkazový řádek (komunikace s MATLABem) pracovní prostor historie příkazů
MATLAB R2006a Rozáhlá nápověda index s názvy matematických i grafických funkcí možnost vyhledávání podle klíčového slova záložky na často hledané kapitoly, tisk
MATLAB R2006a Komunikace přes internet Stránky The MathWorks Podpora Diskuse s uživateli, Newsgroup
MATLAB R2006a Matematické funkce V MATLABu základní matematika (trigonometrické, exponeciální, komplexní, zaokrouhlování, zbytky, faktoriál, největší společný dělitel, ....) polynomy (konvoluce a dělení, vlastní čísla, derivace, integrace) matice a vektory (operace s nimi, speciální matice) lineární algebra (práce s maticemi, řešení soustav lineárních rovnic, vlastní čísla,...) interpolace, generování sítí konverze souřadnicových systémů nelineární numerické metody (ODE, optimalizace, PDE, integrace) speciální mat. funkce (Besselovy fce, ...) řídké matice
MATLAB R2006a Analýza dat Import a export dat v MATLABu interpolace , třídění korelace konečné diference a integrace filtrace a konvoluce Fourierova transformace základní statistické funkce časové řady Import a export dat v MATLABu funkce pro načítání a export dat, řádkové funkce, dialogová okna textové a binární soubory čtení a zápis XLS formátů, Lotus 123
MATLAB R2006a Import a export dat v MATLABu (pokračování) audio a video data (.wav, .avi, .ua), vytváření animací rastrové obrazy (.png, .jpg, .tif, .pcx, .bmp, .gif, .pbm, .hdf, ....) komunikace po internetu (čtení URL, komprimace dat ZIP, Tar) elektronická pošta Grafika v MATLABu kreslení 2D a 3D grafů speciální grafy (plochy, sítě, obchodní grafika) vykreslování rastrových souborů tisky do souboru, na periferie práce s grafickými objekty přes jejich vlastnosti (Handle Graphics) vizualizace 3D grafických objektů (světla, rendering, ...) objemová vizualizace (řezy, izoplochy, vektory rychlosti,...)
MATLAB R2006a Operátory v MATLABu: (>>help ops) + plus - mínus / děleno zprava \ děleno zleva * násobeno ^ mocnina Příklad: 5.1*(10-3.25)/(20.1*3.2-45)*pi 5.1*(10-3.25)\(20.1*3.2-45)*pi
MATLAB R2006a Logaritmy Zaokrouhlování Nespojitá matematika přirozený logaritmus log(x) dekadický logaritmus log10(x) ex exp Zaokrouhlování fix zaokrouhlení směrem k 0 floor zaokrouhlování směrem k celému číslu vlevo round běžné zaokrouhlení Nespojitá matematika factorial faktoriál factor rozložení zadaného čísla perms všechny možné permutace zadaného vektoru gcd největší společný dělitel (Difantické rovnice)
MATLAB R2006a Polynomy polyval(p,x) p = [5, -12, 4, -3]; koeficienty u mocnin v sestupném pořadí x = -6:1:5; nezávisle proměnné pro výpočet polynomu y = polyval(p,x); výpočet hodnot polynomu Opačná operace - proložení dat polynomem [s,pp] = polyfit(x,y,3); Kořeny polynomu k = roots(p); Násobení polynomu (konvoluce) k = conv(p,s);
MATLAB R2006a Vektory a matice 2x -3y +5z = -10 -x +10y - 8z = 1 Příklad řešení lineárních rovnic: Jiná forma zápisu lineárních rovnic: A*X = b kde: >> A=[2 -3 5; -1 10 -8; 18 -14 -2]; >> b=[-10; 1; 6]; Řešení: X = A-1 b >> X=A\b X = -1.6585 -2.1829 -2.6463
MATLAB R2006a Proměnné v MATLABu Matematické operace při práci s polem skalární proměnné a_x = 25.6 vektory x = [8.9, 5-3.5i, 9.6 -10e-6] matice, pole A = [1 -6.5 6; 8.4 0 3; 11 -123 a_x] Matematické operace při práci s polem + , - , * , / , ^ při práci s polem proměnných ./ , .* , .^
MATLAB R2006a Oprace s maticemi + součet (A + B) - rozdíl (A - B) / \ dělení matic zprava, zleva (A/B = A*B-1, A\B = A-1*B) * násobení matic (A * B) ^ umocnění matice (A ^2) .^ umocnění jednotlivých prvků matice (A .^2) .* násobení stejných prvků matice (A .* B) ./ .\ dělení stejných prvků matic zprava, zleva (A ./ B) ' transpozice matice (A')
Indexování matic - lineární index: MATLAB R2006a Indexování matic - lineární index: A(2,1) A(2) 4 -2.3 -1 5 2 15 -2 3 1 7 7.5 10 -3 8 9 8.8 6 14 13 12 11 16 17 18 19 20 25 24 23 22 21 m n A(3:4,2:3) A([8 14; 9 14]) A(: ,5) A(21:25) A(1:5 ,5) A(21:end) 4 -2.3 -1 5 2 15 -2 3 1 7 7.5 10 -3 8 9 8.8 6 14 13 12 11 16 17 18 19 20 25 24 23 22 21 m
Práce s maticemi - pokračování: MATLAB R2006a Práce s maticemi - pokračování: Kopírování matice A do B1, rastr 2, 3: B1= repmat(A, 2, 3) Zjišťování velikosti matice: [m,n] = size(A), n = length(v) Třídění prvků vektoru a matice: [val,index] = sort(A,1) A = magic(4) 16 2 3 13 B = sort(A) 4 2 3 1 5 11 10 8 5 7 6 8 9 7 6 12 9 11 10 12 4 14 15 1 16 14 15 13 Dimenze matice: 1 - výsledky po řádcích 2 - výsledky po sloupcích Další funkce: rot90, flipud, fliplr
MATLAB R2006a Goniometrické funkce parametry funkcí v radiánech sin, asin, cos, acos, tan, atan, tan2, sec, asec, ... parametry ve stupních sind, cosd, tand, secd, ... argumenty mohou být skalární hodnoty nebo pole (vektor, matice) příklad x 0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 sin(x) 0 0.47 0.84 0.99 0.90 0.59 0.14 -0.35 -0.75 -0.97 -0.95 -0.70 -0.27 >> x=0:0.5:2*pi >> y=sin(x)
MATLAB R2006a Příklady - 2D grafy: >> x = 0:0.1:4*pi; Nakreslete průběh funkce: >> x = 0:0.1:4*pi; >> y = sin(x.^2./sqrt(x+1)).*cos(2*x);
MATLAB R2006a Příklady - 3D grafy: >> x = -pi:0.1:pi; y = x; Nakreslete průběh funkce: >> x = -pi:0.1:pi; y = x; >> [X,Y] = meshgrid(x,y); >> Z = (X.^2 + Y.^2).*cos(X.*Y); >> surf (X, Y, Z);
MATLAB R2006a Interpolace v datech odečet v průběhu 1D grafu Jednorozměrná data: interp1 yi = interp1(x,Y,xi) yi = interp1(Y,xi) yi = interp1(x,Y,xi,metoda) yi = interp1(x,Y,xi,metoda,'extrap') yi = interp1(x,Y,xi,metoda,extrapval) pp = interp1(x,Y,metoda,'pp') metoda: ‘nearest’, ‘linear’, ‘linear’, 'spline‘, 'pchip‘, 'cubic‘, ‘v5cubic‘ x = linspace(0,2*pi,50); y = sin(x); xi = [0 1 2 2.5 pi]; yi = interp1(x,y,xi); plot(x,y,xi,yi,’rx’); grid
Interpolace v datech - pokračování MATLAB R2006a Interpolace v datech - pokračování Dvojrozměrná data: interp2 (3D plochy, tabulky) ZI = interp2(X,Y,Z,XI,YI) ZI = interp2(Z,XI,YI) ZI = interp2(Z,nkrat) ZI = interp2(X,Y,Z,XI,YI,metoda) 3D plochy [X,Y] = meshgrid(-3:.25:3); Z = peaks(X,Y); [XI,YI] = meshgrid(-3:.125:3); ZI = interp2(X,Y,Z,XI,YI); mesh(X,Y,Z), hold, mesh(XI,YI,ZI+15) hold off axis([-3 3 -3 3 -5 20])
MATLAB R2006a Import/Export dat v MATLABu interaktivně .gif, .cur, .hdf, .ico, .jpg, .png, .tif, .bmp, .pcx, .avi .mat, .snd, .wav .csv, .xls, .wk1, .txt, .dat, .dlm text, rastrové soubory, video, zvuk
MATLAB R2006a Import/Export dat v MATLABu - funkce (pokračování) textová data Datový formát Příkaz Vrací MAT - MATLAB workspace load Variables in file. CSV - Comma separated numbers csvread Double array. DAT - Formatted text importdata Double array. DLM - Delimited text dlmread Double array. TAB - Tab separated text dlmread Double array. tabulkové procesory (MS Excel, Lotus) XLS - Excel worksheet xlsread Double array nebo buňka WK1 - Lotus 123 worksheet wk1read Double array nebo buňka
MATLAB R2006a Import/Export dat v MATLABu - funkce (pokračování) rastrové obrazy Formát Příkaz Vrací TIFF imread Truecolor, ve škále šedi nebo indexovaný soubor. PNG imread Truecolor, ve škále šedi nebo indexovaný soubor. HDF imread Truecolor or indexovaný soubor. BMP imread Truecolor nebo indexovaný soubor. JPEG imread Truecolor nebo ve škále šedi. GIF imread Indexed indexovaný soubor. PCX imread Indexed indexovaný soubor. XWD imread Indexed indexovaný soubor. CUR imread Indexed indexovaný soubor. ICO imread Indexed indexovaný soubor. RAS imread Truecolor nebo indexovaný soubor. PBM imread Soubor ve škále šedi. PGM imread Soubor ve škále šedi. PPM imread Truecolor soubor.
MATLAB R2006a Import/Export dat v MATLABu - funkce (pokračování) Zvukové soubory Formát Příkaz Vrací AU - NeXT/Sun sound auread zvuková data a vzork. frekvenci. SND - NeXT/Sun sound auread zvuková data a vzork. frekvenci. WAV - Microsoft Wave sound wavread zvuková data a vzork. frekvenci. Animace AVI - Movie aviread MATLAB movie. Animace jako sekvence za sebou jdoucích obrázků Animace jako neustálé mazání a překreslování objektů (přírůstková změna)
MATLAB R2006a Tvorba animací mov = avifile('example.avi') for k=1:n ... F = getframe(gca); mov = addframe(mov,F); end mov = close(mov); Čtení .avi souboru a převod na animaci v MATLABu >> mov = aviread('rotor.avi') >> movie(mov)
MATLAB R2006a Tvorba vlastních aplikací Vlastní editor Ladění kódu optimalizace
MATLAB R2006a Symbolic Math Toolbox Typy matematických výpočtů začleňuje symbolické výpočty do prostředí MATLABu výpočetní jádro toolboxu je z Maple® obsahuje kolem 100 funkcí v MATLABu definuje symbolické objekty (příkaz sym, syms) pracuje se v příkazovém řádku MATLABu Typy matematických výpočtů derivace, integrace, limity, Taulorův rozvoj lineární algebra (determinanty, vlastní čísla, inverze matic,...) zjednodužení algebraických výrazů symbolické a numerické řešení algebraických a diferenciálních rovnic Fourierova, Laplaceova a Z-transformace, inverzní transformace
MATLAB R2006a Symbolic Math Toolbox (pokračování) porovnání výpočtu v MATLABu a v Symbolic Math Toolboxu: >> sqrt(2) >> sqrt(sym(2)) ans = ans = 1.4142 2^(1/2) zjednodušení výrazu vytvoření symbolických proměnných: >> syms a b c >> v=sym('(a+b)^2/(a^2-b^2)*((a+b)/(a*b-b^2))^(-1)') >> pretty(v) >> simplify(v) 2 ans = (a + b) (a b - b ) b ------------------ 2 2 a -b
MATLAB R2006a Symbolic Math Toolbox (pokračování) Řešení kvadratické rovnice: >> syms a b c x >> pretty(x) >> x = solve(a*x^2 + b*x + c); [ 2 1/2] nebo [ -b + (b - 4 a c) ] >> x = solve('a*x^2 + b*x + c = 0'); [1/2 --------------------- ] Výsledek: [ a ] x = 1/2/a*(-b+(b^2-4*a*c)^(1/2)) [ ] 1/2/a*(-b-(b^2-4*a*c)^(1/2)) [ 2 1/2] [ -b - (b - 4 a c) ] [1/2 ----------------------] [ a ]
MATLAB R2006a Derivace funkce: 1. derivace funkce f: >> x = sym('x') >> f = 1/(5+4*cos(x)) Vykreslení >> ezplot(f) 1. derivace funkce f: >> f1 = diff(f) f1 = 4/(5+4*cos(x))^2*sin(x) Vykreslení >> ezplot(f1) 2. derivace funkce f: f2 = diff(f,2) ezplot(f2)
MATLAB R2006a Symbolic Math Toolbox (pokračování) Integrace – obecně y = int(f) Abychom dostali zpět původní funkci, musíme integrovat poslední funkci dvakrát: >> g = int(int(f2)) g = -8/(tan(1/2*x)^2+9) >> ezplot(g)
MATLAB R2006a Symbolic Math Toolbox (pokračování) Determinant matice M: >> M=sym('[a b;x y]') >> det(M) M = ans = [ a, b] a*y-b*x [ x, y] Inverze matice M: Definice funkce: >> inv(M) ans = [ y/(a*y-b*x), -b/(a*y-b*x)] [ -x/(a*y-b*x), a/(a*y-b*x)] >> syms x >> ezplot(f) >> cit = 3*x^2 + 6*x -1; >> jmen = x^2 + x - 3; >> f = ncit/jmen >> f = (3*x^2+6*x-1)/(x^2+x-3)
MATLAB R2006a Symbolic Math Toolbox (pokračování) >> ezplot(f) Vykreslení funkce >> ezplot(f) Nalezení horizontálních asymptot pomocí limity funkce, kde x +nekonečno >> limit(f, inf) ans = 3 existují 3 asymptoty Vertikální asymptoty najdeme, položíme-li jmenovatel = 0 >> roots = solve(jmen) roots = [ -1/2+1/2*13^(1/2)] [ -1/2-1/2*13^(1/2)] >> ezplot(f) >> hold on % nezruší se již nakreslený graf >> % Vykreslení horizontálních asymptot >> plot([-2*pi 2*pi], [3 3],'g') >> % Vykreslení vertikálních asymptot >> plot(double(roots(1))*[1 1], [-5 10],'r') >> plot(double(roots(2))*[1 1], [-5 10],'r') >> title('Horizontal and Vertical Asymptotes') >> hold off
MATLAB R2006a Symbolic Math Toolbox (pokračování) Hledání minima a maxima funkce (1.derivace = 0) v následujících krocích Derivujeme funkci >> f1 = diff(f) f1 = (6*x+6)/(x^2+x-3)-(3*x^2+6*x-1)/(x^2+x-3)^2*(2*x+1) >> pretty(f1) 2 6 x + 6 (3 x + 6 x - 1) (2 x + 1) ---------- - -------------------------- 2 2 2 x + x - 3 (x + x - 3) >> pretty(simplify(f1)) 2 3 x + 16 x + 17 - ---------------- 2 2 (x + x - 3) Derivaci položíme = 0 a řešíme souřadnice extrémů na ose x: >> body_x = solve(f1) body_x = -8/3-1/3*13^(1/2) -8/3+1/3*13^(1/2)
MATLAB R2006a Symbolic Math Toolbox (pokračování) Vykreslení funkce s lokálním minimem a maximem >> plot(double(body_x), double(subs(f,body_x)),'ro') >> title('Maximum and Minimum of f') >> text(-5.5,3.2,'Local minimum') >> text(-2.5,2,'Local maximum') >> hold off Nalezení inflexního bodu – 2. Derivace funkce f = 0 >> f2 = diff(f1); >> inflex_pt = solve(f2); >> double(inflec_pt) >> ans = -5.2635 1 inflexní bod >> inflec_pt = inflec_pt(1) -1.3682 - 0.8511i -1.3682 + 0.8511i
MATLAB R2006a Symbolic Math Toolbox (pokračování) Vykreslení grafu s inflexním bodem >> pretty(simplify(inflec_pt)) 1/2 2/3 1/2 1/3 (676 + 156 13 ) + 52 + 16 (676 + 156 13 ) - 1/6 --------------------------------------------------------------- 1/2 1/3 (676 + 156 13 ) >> ezplot(f, [-9 6]) >> hold on >> plot(double(inflec_pt), double(subs(f,inflec_pt)),'ro') >> title('Inflection Point of f') >> text(-7,2,'Inflection point') >> hold off
MATLAB R2006a Symbolic Math Toolbox (pokračování) funtool – kalkulátor pro výpočet funkcí Interaktivní Současné zobrazení 2 funkcí Integrace, derivace Inverzní funkce Zjednodušení symbolických výrazů Operace s funkcemi
Simulink 6.4 Simulace, modelování a analýza dynamických systémů lineární a nelineární systémy systémy spojité, diskrétní a hybridní systémy mohou být "multirate" základem jsou funkční schémata s bloky Simulink obsahuje 15 knihoven s bloky Příklad:
Simulink 6.4 Příklad 2
Simulink 6.4 Tepelný model rodinného domu simuluje (sldemo_househeat.mdl) Model vnějšího prostředí (venkovní vlivy) Tepelné charakteristiky domu Charakteristiky vyhřívací soustavy
Simulink 6.4 Převod teploty ze stupňů Fahrenheita na stupňě Celsia: C = 5/9*(F-32) Teplotní model domu:
Simulink 6.4 Simulace dynamiky tekutiny v nádobách >> sldemo_tank
MATLAB R2006a Použitá literatura, podklady Simulink: Nápověda programů MATLAB, Simulink a Symbolic Math Toolbox Kniha: K. Zaplatílek, B. Doňar, MATLAB pro začátečníky Skripta: Doc.Ing. F. Dušek, CSc. Ing. D. Honc, Ph.D., MATLAB a Simulink, úvod do používání, Pardubice 2005 Jména použitých demo programů MATLAB: >> wrldtrv >> truss >> makevase Simulink: >> vr_octavia >> sldemo_househeat >> sldemo_tank
MATLAB R2006a Platformy, HW Windows 2000 (SP 3 nebo 4), XP(SP 1 nebo 2) RAM (512) 1024 MB místo na HDD 460 MB (jen MATLAB a Help) Pentium III, IV, Xeon, Pentium M, AMD Athlon, XP, MP, AMD Athlon 64 Windows XP x64 Intel EM64T, AMD64 Solaris 10, (8, 9) SPARC, UltraSPARC RAM (512) 1024 MB, 64 MB swap Linux Kernel 2.4.x, Kernel 2.6.x, glibc 2.3.4 (glibc6) Pentium III, IV, AMD Athlon, Athlon XP, Athlon XP, AMD Opteron
MATLAB R2006a Platformy, HW - pokračování Macintosh Panther Tiger Mac OS X 10.3.9,10.3.8 RAM (512) 1024, swap 64MB místo na HDD 460 MB (jen MATLAB a Help) Tiger Mac OS X 10.4, 10.4.2 Linux 64-bit kernel 2.6.x a glibc 2.3.2 (glibc6) AMD64, AMD Opteron, AMD Athlon 64, Intel EM64T RAM (256) 512, swap 64MB místo na HDD 300 MB (jen MATLAB a Help)
Děkuji za pozornost