Matlab, laboratoř nejen pro matematiky


Pavel Píša


článek byl napsán pro časopis Sdělovací technika

Další podobné články lze najít na následujících adresách [1] [2]


Tento článek se bude snažit přiblížit možnosti a základní použití systému Matlab i neinformovanému čtenáři. Vzhledem k délce textu budou ukázány pouze základní konstrukce jazyku Matlabu. Další moderní vlastnosti a oblasti použití systému budou pouze nastíněny.

Obsah

1  Skladba systému
2  Základy práce s maticemi
3  Funkce a jazyk Matlabu
4  Vizualizace a grafika
5  Toolboxy - balíky vědomostí
6  Simulink
7  Závěr

1.  Skladba systému

Původně Matlab vznikl jako interaktivní nadstavba pro usnadnění práce s knihovnami LINPACK a EISPACK pro práci s maticemi. Základním typem byly matice, které na rozdíl od většiny jiných systémů a jazyků nevyžadovaly nastavování dimenzí.

Současný Matlab je mnohem více než jen nadstavbou maticové knihovny.

Systém obsahuje vlastní interpretr jazyku MATLAB, ve kterém lze připravit jak dávkové soubory, tak definovat i nové funkce. Tyto funkce mohou být interpretovány buď přímo z textové podoby souborů nazývaných m-file nebo z předzpracované podoby p-file. Systém dále umožňuje přidávat moduly ( soubory mex-file ) zkompilované do strojového kódu procesoru. Jazykem zdrojových souborů může být jazyk C, C++, Fortran nebo po použití mcc ( Matlab to C Compiler) i funkce uložená v m-file.

V prostředích, kde je možný grafický výstup, je k dispozici velmi silná podpora pro tvorbu uživatelského prostředí a vizualizaci dat. Základní funkce umožňují vizualizaci 2D a 3D dat v grafech s množstvím volitelných parametrů, které lze po doplnění legendou a popisy os snadno vytisknout. Systém umožňuje i tvorbu vlastních dialogů a oken s kombinacemi grafů, tlačítek, listů a dalších objektů, kterým mohou být přiřazeny volané funkce v m-file. Dobře je obslouženo i ukazovací zařízení - myš.

Pro tvorbu samostatně spustitelných aplikací je k dispozici Matlab library.

Asi nejdůležitější částí instalace Matlabu jsou ''knihovny'' funkcí ( ve skutečnosti adresáře s m a mex soubory ), které jsou nazývány toolboxy. Toolboxy obsahují vždy uceleným způsobem včetně dokumentace a příkladů zpracovaný určitý obor numerické matematiky, analytické matematiky, statistiky, systémového přístupu k regulacím a další obory, ve kterých nachází Matlab uplatnění.

Samostatnou kapitolu tvoří Simulink. Jedná se o toolbox, který se však prolíná i s vlastním programem matlab. V grafickém intuitivním prostředí Simulinku lze snadno schematicky znázornit téměř libobolný dynamický systém a provést simulaci jeho chování. Diskrétní i spojité části systémů lze libovolně kombinovat, mohou obsahovat předdefinované i uživatelské nelineární funkce. Lze přidávat i nové systémové bloky definované jak v m-file tak v mex-file.

RTW - Real Time Workshop je další velmi moderním nástrojem určeným pro vývoj regulačních algoritmů, které mohou být po kompilaci provozovány v reálném čase. Tento toolbox provede několikaúrovňový překlad schématu ze systému Simulink do strojového jazyku cílového procesoru. Blokové schéma je nejdříve přeloženo do zdrojové formy jazyku C. V této fázi je doplněno o funkce obsluhy přerušení, komunikace s periferiemi, uživatelem definované funkce v jazyku C. Nakonec je zavolán kompilátor jazyku C pro požadovanou cílovou platformu. Tou může být buď počítač provozující Matlab ( vhodné pro kontrolu a zrychlení běhu simulace v Simulinku ) nebo přímo hardware určený pro řízení v reálném čase. Jako cílových procesorů se v druhém případu většinou používá výkonných DSP ( digital signal processing ) mikrokontrolérů. Existuje několik firem dodávajících přímo hardware s podporou pro RTW. Autor má zkušenosti s řídící deskou od firmy D-Space osazenou procesorem TMS320C31 od Texas Instruments.

Pro uživatele systému Windows 95 může být zajímavý i produkt české firmy Humusoft Real Time Toolbox. Tato nadstavba umožňuje vzorkování a ukládání příchozích dat z vstupně výstupních portů, vysílání přímo definované hodnoty nebo průběhu uloženého v paměti a definování propojení mezi vstupy a výstupy přes lineární diskrétní MIMO ( s více vstupy i výstupy ) regulátory. Nejnovější verze by měly být schopny i propojení vstupů a výstupů přes libovolný schematický diagram definovaný v Simulinku.

Po výčtu základních vlastností systému Matlab si již čtenář může lépe představit uplatnění systému v typických oblastech pro jeho použití tak, jak je udává návod k systému Matlab:

Dalším důležitým údajem je výčet operačních systémů a architektur, na kterých lze Matlab provozovat. Matlab existuje ve verzích pro Windows 95, Windows NT i Windows 3.1 a ve verzích pro Unixové platformy. V následující tabulce jsou obsaženy platformy podporované v Unixové verzi Matlabu 5.2.

Sun Sparc sun4 SunOS 4.1.4
Sun Sparc sol2 Solaris 2.5
HP 9000 PA-RISC hp700 HP-UX 10.20
DEC Alpha alpha Digital UNIX 4.0C
IBM RS/6000 ibm_rs AIX 4.2
Silicon Graphics sgi IRIX 6.3
Silicon Graphics sgi64 IRIX64 6.4
Linux lnx86 Linux 2.0.1

V tabulce je vždy uveden název platformy, použitá koncovka pro zkompilované mex-soubory, operační systém a minimální verze systému nutná ke běhu software.

Autor má praktické zkušenosti s verzemi Matlabu 4.2c pro Windows a s verzí 5.2 pro operační systém Linux. V dalším textu bude jako základní popisovaná verze 5.2 pro Linux. Na rozšíření proti verzi 4.2c bude upozorněno.

2.  Základy práce s maticemi

Program se spouští příkazem matlab z operačního systému nebo poklepem na ikonu v grafickém prostředí. Po spuštění se objeví prompt příkazové řádky Matlabu. Program je možno opustit příkazem quit. K první pomoci slouží příkaz help a k vyvolání kompletní dokumentace příkaz helpdesk. K Unixové verzi je dodávána dokumentace jak ve formátu HTML tak ve formátu PDF ( k zobrazení slouží Adobe Acrobat Reader ).

Matlab ve svém základu, jak již bylo řečeno, je zaměřen především na snadnou práci s maticemi. Pro snadné pochopení budou uvedeny příklady. Matice je možné z prvků nebo matic skládat jejich vložením mezi symboly [ ]. Jednotlivé prvky ( například čísla ) se oddělují ve vodorovném směru znakem mezera nebo čárka a ve svislém směru znakem konce řádky nebo středník. Pro skládání prvků platí, že výsledná matice musí být čtvercová nebo obdélníková ( musí obsahovat ve všech řádcích shodný počet základních prvků - komplexních nebo reálných hodnot ). V následujících příkladech bude používáno kratší symboliky se středníkem a čárkou.

A=[11,12; 21,22]

Tento příkaz definuje matici A rozměru 2×2 . Příkaz je možno zadat buď přímo za prompt v příkazové řádce po spuštění programu matlab, nebo do m-souboru. Při odeslání příkazu z příkazové řádky dojde k vytvoření proměnné A a je vypsán její obsah.

>> A=[11,12;21,22]

A =

    11    12

    21    22

Obdobně lze definovat sloupcový vektor v nebo řádkový vektor u.

v=[1;2]   u=[3,4]

Důležitou vlastností je možnost skládat nejen číselné hodnoty a skalární proměnné, ale i možnost skládat a rozšiřovat matice. To ilustruje následující příklad.

>> B=[A,v;u,0]

B =

    11    12     1

    21    22     2

     3     4     0

Vždy je ovšem nutno dodržet plný obdélníkový nebo čtvercový tvar výsledné matice.

Opakem ke skládání prvků do matic je indexování matic. K indexování matic se používá znaků kulaté závorky, mezi které se vloží indexy požadovaného prvku oddělené čárkou. Pozor : shodného typu závorek je použito i k uzavírání vstupních parametrů při volání funkcí.

>> A(2,1)

ans = 

      21

Důležité je pamatovat si, že indexy se zadávají v pořadí řádek, sloupec a indexování začíná prvkem (1,1). Od verze Matlabu 5 je možné pracovat i s vícerozměrnými poli ( N-D arrays ), pak jsou indexy uspořádány podle jednotlivých dimenzí pole. Pro indexaci sloupcových i řádkových vektorů stačí zadat do závorek pouze jednu hodnotu, dokonce na pole libovolné dimenze lze pohlížet jako na vektor vyplňující pole postupně od první k dalším dimenzím. Pro 2D matici to znamená složení jejích sloupců postupně pod sebe.

>> A(3)

ans =

    12

Další základní operací je tvorba transponované matice. Docílí se přidáním znaku apostrof za určení matice. Tím může být jak jméno již definované proměnné tak i složení prvků hranatými závorkami.

>> A'             

ans =

    11    21

    12    22

Nyní si můžeme vyzkoušet své znalosti maticového a vektorového počtu. Většina obvyklých operací je rozšířena i na matice. Seznam základních operací lze získat po odeslání příkazu help ops.

Základní operace aplikovatelné na matice jsou sčítání a odčítání .. + a - , unární plus a minus .. + a - , maticové násobení .. * , umocňování matice skalárem a skaláru maticí .. ^ a dělení matic. Protože Matlab umožňuje i dělení obdélníkových matic ( nelze počítat přes funkci determinant .. det ) jsou k dispozici dvě operace, pravé a levé maticové dělení ... / a \ . Některé operace je možno provádět i po prvcích ( provádí se skalární operace mezi odpovídajícími si prvky matic shodné dimenze ). Pro tyto operace jsou použity obvyklé symboly s přidaným znakem . .. .* , .^ , ./ a .\ .

Dále jsou k dispozici relační operace ( rovnost .. == , nerovnost .. ~= , menší .. <  , větší .. >  , menší rovno .. < = a věší rovno .. > = ), jejichž výsledkem jsou matice, ve kterých číselná hodnota 1 označuje pozice, pro které byla relace splněna. Ostatní prvky obsahují hodnotu 0. Matice v relaci musí být shodné dimenze, nebo alespoň jedna strana musí být skalár.

Při matematických výpočtech jsou často potřeba řady. Pro jednoduchý zápis vzestupných aritmetických řad ( vektorů a intervalů ) se používá znak : . Vzestupnou řadu ( vektor ) s inkrementem jedna od hodnoty K do hodnoty L lze zapsat jako K:L . Je-li potřeba definovat jiný inkrement než 1, lze použít zápis K:D:L , kde D je hodnota inkrementu. Této notace lze s výhodou použít také při výběru prvků z matice. Matlab umožňuje při indexaci použít kromě skalárních indexů i vektorů a intervalů, výsledkem je pak matice složená z prvků s vybranými hodnotami indexů. Při indexaci je možné použít i speciální notace pro všechny hodnoty daného indexu ( samotný znak : ) a pro výběr všech prvků od indexu K do maximální hodnoty indexu dané dimenze zápis K:end .

>> B(2:end,[1,3]) 

ans =

    21     2

     3     0

Pro práci s maticemi je předdefinováno velké množství funkcí. Zde je uvedeno jen několik nejpoužívanějších z nich. size(A) vrací vektor rozměrů matice v jednotlivých dimenzích. size(A,D) vrací maximální hodnotu indexu v dimenzi ( směru ) D. zeros(N,M,...) vytváří podle počtu vstupních parametrů matici nebo N-D pole rozměrů daných parametry naplněné nulami. S jedním vstupním parametrem vytváří čtvercovou matici. Obdobně ones naplní matici nebo pole jedničkami. eye(N) vrací jednotkovou ( diagonální ) matici. exp(A) umocňuje Eulerovo číslo maticí A. det(A) počítá determinant matice. sum(A) sečte prvky v první dimenzi s nejednotkovým rozměrem a vrací je v poli se zmenšenou dimenzí ( v případě matic vrací vektor součtů sloupců, plná definice odpovídá N-D polím pro verzi Matlabu 5 ). Je-li třeba dimenzi, přes kterou se bude sčítat, specifikovat lze použít zápis sum(A,D). Shodné vlastnosti jako sum mají i funkce součin prvků .. prod , maximum .. max , minimum .. min ,alespoň jeden nenulový prvek .. any , všechny nenulové prvky .. all a některé další funkce. Podobné jsou též funkce cumsum a cumprod , které však nesnižují dimenzi pole, ale ukládají do každého prvku kumulativní součet/součin prvků do dané hodnoty indexu.

Většinou pro vyhodnocení relačních operací se používá funkce find , vracející vektor indexů, pro které argument obsahuje nenulové hodnoty. Úplný popis lze získat po odeslání příkazu help find.

Veškeré operace jsou definovány i pro komplexní čísla. Následují některé z funkcí určených pro práci s komplexními čísly. Reálná část .. real , imaginární část .. imag , absolutní hodnota .. abs , přirozený logaritmus .. log a další funkce.

Systém Matlab umožňuje ukládat a načítat matice do nebo ze souboru. Soubor může být buď textový, pak obsahuje hodnoty pouze z jedné matice, nebo binární. Do binárního souboru lze uložit specifikované proměnné a nebo veškeré proměnné existující v daném okamžiku v prostředí Matlabu. Úplný popis lze získat po odeslání příkazu help load, save. Pro sledování a uvolňování aktuálně nadefinovaných proměnných v prostředí slouží příkazy who , whos a clear .

Na závěr pojednání o maticích by bylo správné uvést alespoň náznakem přehled typů matic, se kterými může Matlab pracovat. Matice s reálnými nebo komplexními čísly mohou být buď plné ( full ) nebo řídké ( sparse ), které obsahují velké množství nulových prvků. Dále existuje typ matice textové, která odpovídá poli textových řetězců v jiných systémech. Textové konstanty se zadávají vložením posloupnosti znaků mezi apostrofy ( ' ). Ve verzi Matlabu 5 bylo množství základních typů výrazně rozšířeno. Je možné používat celočíselná pole s prvky různé bitové délky s a bez znaménka ( int8, uint8, int16, uint16, int32 a uint32 ). Dále lze definovat struktury, pole prvků s rozdílnými typy ( cell array ) a definovat nové typy. Pro jednotlivé typy mohou být definovány specifické funkce podobné metodám v objektově orientovaných jazycích.

3.  Funkce a jazyk Matlabu

Matlab podporuje funkce s různým počtem vstupních i výstupních parametrů. Při definici funkce jsou nadefinována formální jména vstupních a výstupních parametrů. Při volání funkce není nutné naplnit všechny vstupní parametry a ukládat hodnoty všech výstupních parametrů. V těle volané funkce jsou pak nepoužité vstupní parametry nedefinovány a funkce nesmí číst hodnoty těchto parametrů. K informaci o počtech parametrů slouží funkce nargin a nargout . Jako příklad je uvedena velmi jednoduchá implementace diskrétní Fourierovy transformace. První vstupní parametr x je časová posloupnost hodnot ( v nejjednodušším případě se jedná o sloupcový vektor ). Druhý vstupní parametr k je vektor frekvencí, pro které má být DFT počítána. Není-li uveden je DFT počítána pro standardní vektor frekvencí z definice komplexní DFT. Funkce vrací komplexní vektor, je-li výsledek uložen jen do jedné matice. Jsou-li plněny výsledkem dvě matice, uloží se do první velikosti amplitud a do druhé fázová posunutí. Funkce je nadefinována takovým způsobem, že umožňuje provést DFT i pro N-D pole, kde první index představuje čas a ostatní soubory hodnot v čase, například pro 3-D se může jednat o časovou posloupnost matic.

function [F,A]=my_dft(x,k);

% very simple DFT implementation

  n=size(x,1);

  if nargin<2

    k=[0:n-1]';  % default

  end

  if size(k,2)>1

    k=k';        % for N-D

  end;

  F=(exp(-j/n*2*pi*k*[0:n-1])*x)/n;

  if nargout>1

    A=angle(F);

    F=abs(F);

  end;

return

Důležitá upozornění. Matlab považuje veškerý obsah řádky za znakem % za komentář. Definice funkce musí být obsažena v první řádce souboru. Souvislý blok komentáře začínající od druhé řádky a označený znakem % v prvním sloupci bude vypsán příkazem help jméno_funkce . Příkazy obsahující přiřazení nebo volání funkcí je ve funkcích vhodné ukončovat znakem , jinak při každém provedení příkazu dojde k vypsání hodnot plněných proměnných.

Funkci je třeba uložit do souboru s názvem shodným se jménem funkce a s příponou .m . Aby Matlab nalezl příslušnou funkci ( m-file ) musí se nacházet v aktuálním adresáři nebo v adresáři obsaženém v cestě k souborům ( funkce matlabpath a path ). Výše uvedenou funkci my_dft lze pak volat například následovně

my_dft(X)      % vypíše komplexní DFT

F=my_dft(X);   % vrací vektor hodnot a nic nevypisuje

[Amp,Ph]=my_dft(X,1:10));

Poslední příklad počítá amplitudy a fázové posuny pro frekvence odpovídající signálům o jedné až deseti periodách v původních datech.

Informace o základních konstrukcích jazyku jsou dostupné po odeslání příkazu help if , elseif , end , for , while a switch .

V m-souborech Matlabu verze 5 lze též definovat lokální funkce pro opakující se operace použité v hlavní funkci. Zároveň je možné definovat funkce s proměnným počtem parametrů bez omezení. K tomu slouží symboly varargin a varargout.

4.  Vizualizace a grafika

Nejjednodušším příkazem pro zobrazení závislosti dvou proměnných nebo průběhu jedné proměnné je příkaz plot . Zobrazovaná data jsou předávána ve formě sloupcových vektorů. Obecně má příkaz podobu plot(X,Y,S,...) , kde X a S mohou být vynechány. Vykreslení dvou period funkce sinus zajistí příkaz plot(sin(0:0.01:4*pi)') . Transpozice na sloupcový vektor není v tomto případě nezbytně nutná, plot je inteligentní. V takto vykresleném grafu bude mít osa x význam hodnoty indexu v předaném vektoru. Proto by bylo vhodnější nadefinovat proměnnou X=[0:0.01:4*pi]' dále proměnnou Y=sin(X) a použít delší formy příkazu plot . Textový parametr S specifikuje barvu a způsob vykreslení průběhu. Skupinu parametrů X,Y,S lze i několikrát opakovat Zároveň parametr Y nemusí být jen sloupcový vektor. Více sloupcových vektorů složených do matice provede vykreslení několika průběhů. Úplná forma příkazu plot je využita v následujícím příkladu.

X=[0:0.01:4*pi]'

plot(X,[sin(X)./X],'k-',X,[sin(X),cos(X)],'k--')

Jedná se o vykreslení průběhu funkce [sinx/x] , která se často používá pro rekonstrukci navzorkovaných signálů. Pro úvahu nad jejím průběhem jsou přidány funkce sinx a cosx . Specifikace znakem 'k' definuje černou barvu, znakem '-' plnou a znaky '- -' čárkovanou čáru. Příkazy title , xlabel , ylabel a text lze graf doplnit popisy. Výsledný graf lze vytisknout nebo exportovat do souboru. V systému Windows lze též použít k přenosu do jiných aplikací schránku.


Matlab umožňuje vykreslit více grafů do jednoho okna, a to jak přes sebe ( hold on ) tak i vedle a pod sebe ( subplot ). Je možné libovolně měnit měřítka os, používat logaritmické a semilogaritmické zobrazení. Funkce mesh vykresluje z matic 3-D grafy.

Grafický subsystém Matlabu je dobře strukturovaný a umožňuje snadnou manipulaci s grafy a dialogy na libovolné úrovni. Prostorem pro libovolný grafický výstup i vstup je grafická okna ( funkce figure ), kterých může být může být otevřeno téměř libovolné množství. Do každého okna je možno vkládat další grafické objekty ( grafy, tlačítka, posuvné lišty, editační vstupy, výběrové listy a ostatní prvky obvyklé pro uživatelská rozhraní). Výše uvedené funkce pro vykreslování průběhů a ploch jsou pouze funkce vyšší úrovně využívající objektových vlastností grafického subsystému. Plot zjednodušeně odpovídá tvorbě nového grafického okna ( když je to potřeba ), vložení objektu axes ( osy grafu ) a vložení jednotlivých lomených čar ( line ) do takto vytvořeného objektu. Je-li potřeba pracovat s více okny a nebo objekty je možno využít čísel přiřazených každému oknu i objektu ( handle ). K hodnotám jednotlivých vlastností objektů lze pak přistupovat přes funkce get a set . Číslo handle je vždy vráceno při tvorbě objektu a je nutné si ho pamatovat v nějaké proměnné. Druhou možností jak získat handle k některému objektu, je hledání objektů podle jména, které jim může být přiřazeno během jejich vytváření, a nebo procházení stromu objektů, který začíná neviditelným objektem 0. Většině objektů je možno přiřadit sekvence příkazů ( včetně volání funkcí a m-file ), které mají být provedeny při určitých událostech ( například kliknutí myší, odeslání nové hodnoty atd. ).

Pro tvorbu složitých dialogů je k dispozici kromě mnoha funkcí vyšší úrovně i kompletní návrhář dialogů a oken, který se spouští příkazem guide . Zajímavostí je, že celý tento návrhář, srovnatelný s mnoha programy určenými pouze pro tvorbu GUI, je celý napsán a interpretován z m-souborů napsaných v jazyku Matlabu.

5.  Toolboxy - balíky vědomostí

Jedná se o souhrn metod a vědomostí snad ze všech oborů, ve kterých se využívá exaktního matematického nebo číselného vyjadřování. Kromě knihoven pro statistiku, aproximace a prokládání funkcí a dalších obvyklých součástí i jiných matematických systémů obsahuje balíky pro indentifikaci, modelování a návrh řízení i složitých systémů, filtrace, komprese a zpracování obrazů a další. Některé balíky obsahují i předdefinované modely pro ověřování dynamických vlastností systémů v Simulinku . Většina balíků obsahuje i demonstrační příklady, s jejichž pomocí je možné snadno přejít k řešení vlastních problémů.

Popis každého z asi 35 dostupných toolboxů by vydal na samostatný článek. Proto jen pro nastínění možností následuje ukázka bez většího komentáře z toolboxu pro symbolickou matematiku.

>> syms x y z          

>> z=x^y+y^x+sin(1/x)

z =

x^y+y^x+sin(1/x)

>> int(z,x)          

ans =

x^(y+1)/(y+1)+1/log(y)*y^x+sin(1/x)*x-cosint(1/x)

>> 

Po zavedení symbolických proměnných v prostředí Matlabu byl nadefinován vztah z v závislosti na x a y . Poté byla provedena integrace přes x . Stejně snadno lze řešit derivace a soustavy i nelineárních rovnic. Symbolický toolbox je založen na knihovně Maple a je doplněn pro demonstraci interaktivní funkční kalkulačkou, která veškeré operace provádí analyticky a průběhy funkcí kromě analytických vztahů zobrazuje graficky.

6.  Simulink

Simulink postupně přerostl z knihovny funkcí určené k simulaci jednoduchých lineárních spojitých a diskrétních systémů v samostatný subsystém s dokonalým uživatelským rozhraním. Základem Simulinku jsou bloky, které reprezentují elementární dynamické systémy. Propojením signálových vstupů a výstupů těchto bloků vznikají modely složitějších systémů. Libovolnou skupinu bloků lze uzavřít do subsystému a určit externí vstupy a výstupy této skupiny. Dále lze pracovat s takovouto skupinou jako se základními blokem. Je li potřeba zastínit proměnné parametry bloků uvnitř skupiny, lze uzavřenou skupinu zamaskovat a doplnit informacemi, které vytvoří při modifikaci parametrů bloku dotazový dialog a postarají se o přepočítání a přenesení zadaných parametrů dovnitř do zamaskované skupiny. Pro zamaskovanou skupinu lze také vytvořit grafickou reprezentaci skupiny, která se může být i závislá na nastavených parametrech. K výpočtům parametrů lze užít všech forem výrazů a volání funkcí, které Maltab umožňuje.

Interaktivní způsob tvorby a simulace modelů se spouští z příkazové řádky systému Matlab příkazem simulink . Po spuštění je vytvořeno okno pro tvorbu nového modelu a okno obsahující základní nabídku otvírání knihoven zdrojů signálů, základních spojitých, diskrétních a nelineárních bloků a bloků pro zobrazování a ukládání signálů. Pod touto interaktivní obálkou se skrývá systém velmi podobný grafickému subsystému s obdobnými funkcemi simget a simset . Další vrstva funkcí umožňuje již komfortnější neinteraktivní tvorbu modelů systémů. Pro obvyklého uživatele však není nutné o implementaci a programování modelů přemýšlet.

Základní a již dále nedělitelné jsou pouze bloky obsahující takzvané s-funkce. Jedná se o zabudované funkce, mex-soubory a nebo o obvyklé interpretované funkce uložené v m-souborech. Tyto funkce mají předepsané parametry a chování pro různé druhy volání. Pro spojité systémy v jednoduchosti informují o okamžitých hodnotách derivací a výstupů bloku pro diskrétní bloky o příštích hodnotách výstupů při zadaných vstupních hodnotách. Jednoduché nelineární bloky lze také vytvářet vložením libovolného přípustného výrazu v jazyku Matlabu do k tomu určeného bloku.

Simulink je schopen simulovat smíšené systémy obsahující spojité části, diskrétní části i s různými periodami vzorkování a s posunutými okamžiky vzorkování. Je schopen simulovat i nelineární bloky a aproximovat chování systémů obsahujících algebraické smyčky, na které ovšem před simulací upozorňuje.

Dynamické vlastnosti lineárních částí lze popisovat komplexními přenosy, maticemi systémů nebo přímo použít bloky reprezentující přímo sčítání, integraci, diferenci, násobení konstantou a další elementární operace. V knihovně nelineárních bloků jsou předdefinovány paměťové bloky, přepínače, releové charakteristiky, násobení a dělení signálů, zdroje hodinových impulsů a mnoho dalších.

Na obrázku je znázorněn velmi jednoduchý model systému s přenosovou funkcí odpovídající dolní propusti. Zesílení systému je omezeno primitivní zápornou zpětnou vazbou, do které je pro ilustraci vložen zesilovač se zesílením jedna. Model je buzen generátorem sinusového signálu s postupně se zvyšující frekvencí. Na vstup i výstup modelu jsou připojeny bloky osciloskopu. Simulované průběhy signálů jsou vykresleny na dalších dvou obrázcích. Kromě zobrazovacích přijímačů signálů je možné použít i bloků pro ukládání a načítání průběhů signálů do proměnných přístupných z prostředí interpretru Matlabu. Jednotlivá propojení bloků nemusí reprezentovat jen jednotlivé signály, ale mohou reprezentovat i skupiny signálů - vektory.




Většinu systémů, které mohou být řešeny v diskrétním čase ( lze je diskretizovat ) je možno přes RTW převést přímo do zdrojového kódu v jazyku C, který lze po doplnění zdrojovými texty pro uživatelem definované s-funkce přímo kompilovat do strojových jazyků počítačů určených k řízení. Pak vytvoření i složitého regulačního systému může vypadat tak, že návrhář staví model navrhovaného regulátoru z předdefinovaných bloků Simulinku a po stisknutí jediného tlačítka ( je-li již správně zvolena konfigurace ) dojde ke kompletnímu překladu a downloadu výsledného kódu do řídící jednotky.

7.  Závěr

Z popisu systému Matlab je patrné, že se z původního programu pro snadnou práci s maticemi ( MatLab - matrix laboratory - maticová laboratoř ) vyvynul v ucelený systém. Tento systém je možné využít jak pro teoretické úvahy, tak i pro řešení praktických problémů svázaných s využitím matematiky. Systém postupně získal schopnosti řešit dynamické systémy, vytvářet nejen grafy ale i kompletní grafické uživatelské prostředí, interaktivně editovat a skládat dynamické bloky a řešít matematické problémy analyticky. S rozvojem oblastí využití se postupně rozvíjí i syntaxe jazyka Matlabu.

Informace o dalších produktech firmy MathWorks a o nových verzích programů se může čtenář dozvědět na adrese http://www.mathworks.com/products/ . Dalším zdrojem informací může být dokumentace k systému Maltab a k jednotlivým toolboxům, která v elekronické podobě představuje okolo 100 MB souborů PDF a HTML.


File translated from TEX by TTH, version 1.1.