Špeciálne jazykové prostriedky počítačov - SJPP

1. Úvod do MATLABu

MATLAB® je integrované prostredie pre vedeckotechnické výpočty, modelovanie, návrhy algoritmov, simulácie, analýzu a prezentáciu údajov, meranie a spracovanie signálov, návrhy riadiacich a komunikačných systémov. MATLAB je nástroj tak pre pohodlnú interaktívnu prácu, ako aj pre vývoj širokého spektra aplikácií.

1.1. Systém MATLAB

MATLAB bol pôvodne vyvinutý pre prístup k matematickým knižniciam (EISPACK, LINPACK). Názov vznikol z anglických slov matrix laboratory. Najskôr existovali verzie iba pre operačné systémy typu UNIX, prvá verzia pre Windows bola uvedená na trh až v roku 1994.

1.1.1. História MATLABu

Prvá verzia (pre PC XT) vznikla okolo roku 1985. Ako väčšina programov tej doby mala problémy s nedostatkom pamäti, čo obmedzovalo hlavne veľkosť matíc, s ktorými bolo možné vykonávať výpočty. Ďalšia verzia bola určená špeciálne pre počítač PC AT, kde bola veľkosť matíc obmedzená na 16 MB.

Virtuálnu pamäť začal MATLAB používať s nástupom počítačov s procesorom 80386, výpočty ale boli stále veľmi pomalé. Pre ilustráciu: výpočet inverzie matice 1000x1000 trval niekoľko minút.

V roku 1994 bola na trh uvedená verzia pre Windows, čo zo sebou prinieslo veľkú výhodu v podobe väčších možností grafiky, na druhej strane boli výpočty pomalšie.

Posledná verzia je Release 14 / verzia 7.0 (rok 2005).

1.1.2. O programe

Program MATLAB používa programovací jazyk MATLAB. V postate sa jedná o prácu veľmi podobnú práci v unixové konzole. Užívateľ zadáva príkazy, ktoré sú potom na jeho pokyn vykonané. Dnes je však už možné veľkú časť príkazov zadávať v grafickom rozhraní. Odpadá tak namáhavé zadávanie údajov do príkazového riadku.

Najdôležitejšou časťou programu MATLAB je jeho výpočtové jadro. Medzi jeho základné operácie patria operácie s maticami (determinant, inverzia, atď.), vrátane rozsiahlych tzv. riedkych matíc a operácie s vektormi. Tie môžu byť reprezentované aj ako polynóm.

Základným dátovým typom v MATLABe sú matice, ďalším sú napríklad viacrozmerné pole reálnych alebo komplexných čísiel a tzv. pole buniek, v ktorých každá časť môže mať iný dátový typ. Ďalšie dátové typy si užívateľ môže nadefinovať sám a vytvárať tak v podstate neobmedzene zložité dátové štruktúry.

Verzia MATLABu (6.5) sa môže pochváliť veľmi prepracovanou grafikou, ide o systém nazvaný Handle Graphics. Vie kresliť grafy, rôzne ich upravovať, atď.

Výhodou je tiež prepojenie s jazykom Java. Je tak umožnené využívať knižnice vytvorené pre Javu. Do MATLABu potom možno vkladať aj časti vytvorené v jazyku C a naopak do jazyka C exportovať.

1.1.3. Toolboxy

Toolboxy (knižnice) sú špecializované knižnice obsahujúce preddefinované funkcie napísané v jazyku MATLAB určené k riešeniu problémov v danej oblasti. Spravidla boli vyvinuté (alebo aspoň ich jadro) na univerzite tímom okolo významného odborníka. Ku každému toolboxu existuje pomerne rozsiahla dokumentácia.

MATLAB pozostáva z piatich hlavných častí:

  1. Syntax jazyka MATLAB
  2. Užívateľské prostredie MATLABu
  3. Grafika MATLABu
  4. Knižnica matematických funkcií MATLABu
  5. Prepojenie MATLABu s aplikačnými programovacími jazykmi

Syntax jazyka MATLAB

Knižnica Opis
ops operátory s špeciálne znaky
lang konštrukcia programovacieho jazyka
strfun charakter reťazcov
iofun vstup-výstup súboru
timefun dátum a čas
datatypes dátové typy a štruktúry

Užívateľské prostredie MATLABu

Knižnica Opis
general operátory a špeciálne znaky

Grafika MATLABu

Knižnica Opis
graph2d dvojrozmerné grafy
graph3d trojrozmerné grafy
specgraph špeciálne grafy
graphics manipulácia s grafmi
uitools grafické užívateľské prostriedky

Knižnica matematických funkcií MATLABu

Knižnica Opis
elmat elementárne matice a manipulácia s maticami
elfun základné matematické funkcie
specfun špeciálne matematické funkcie
matfun maticové funkcie - numerická lineárna algebra
datafun analýza dát a Fourierová transformácia
polyfun interpolácia a polynómy
funfun práca s funkciami a riešenie dif. rovníc cez ODE
sparfun riedke (Sparse) matice

Prepojenie MATLABu s aplikačnými programovacími jazykmi

1.1.4. Simulink

Simulink je program, ktorý využíva MATLAB a jeho funkcie na simuláciu dynamických systémov. Je mladší než MATLAB, jeho prvá verzia bola k dispozícii s MATLABom 4. Simulink má trochu iné užívateľské rozhranie než MATLAB. Zatiaľ čo v MATLABe je stále najdôležitejší príkazový riadok, ovládanie Simulinku je jednoduchšie a intuitívnejšie, ale pokročilejšie funkcie nie je možné vykonávať bez znalosti jazyka MATLAB. Do Simulinku možno vkladať, rovnako ako v MATLABe, časti napísané v jazyku C.

Zoznam všetkých nainštalovaných toolboxov si môžete vypísať príkazom help.
Príklad 1.1: Zoznam nainštalovaných toolboxov
>> help

HELP topics:

matlab\general       -  General purpose commands.
matlab\ops           -  Operators and special characters.
matlab\lang          -  Programming language constructs.
matlab\elmat         -  Elementary matrices and matrix manipulation.
matlab\elfun         -  Elementary math functions.
matlab\specfun       -  Specialized math functions.
matlab\matfun        -  Matrix functions - numerical linear algebra.
matlab\datafun       -  Data analysis and Fourier transforms.
matlab\audio         -  Audio support.
matlab\polyfun       -  Interpolation and polynomials.
matlab\funfun        -  Function functions and ODE solvers.
matlab\sparfun       -  Sparse matrices.
matlab\graph2d       -  Two dimensional graphs.
matlab\graph3d       -  Three dimensional graphs.
matlab\specgraph     -  Specialized graphs.
matlab\graphics      -  Handle Graphics.
matlab\uitools       -  Graphical user interface tools.
matlab\strfun        -  Character strings.
matlab\iofun         -  File input/output.
matlab\timefun       -  Time and dates.
matlab\datatypes     -  Data types and structures.
matlab\verctrl       -  Version control.
matlab\winfun        -  Windows Operating System Interface Files (DDE/COM)
winfun\comcli        -  (No table of contents file)
matlab\demos         -  Examples and demonstrations.
toolbox\local        -  Preferences.
simulink\simulink    -  Simulink
simulink\blocks      -  Simulink block library.
simulink\components  -  Simulink components.
....
Príklad 1.2: Operátory a špeciálne znaky knižnice OPS
>> help ops

  Operators and special characters.
 
  Arithmetic operators.
    plus       - Plus                               +    
    uplus      - Unary plus                         +    
    minus      - Minus                              -    
    uminus     - Unary minus                        -    
    mtimes     - Matrix multiply                    *    
    times      - Array multiply                    .*    
    mpower     - Matrix power                       ^    
    power      - Array power                       .^    
    mldivide   - Backslash or left matrix divide    \    
    mrdivide   - Slash or right matrix divide       /    
    ldivide    - Left array divide                 .\    
    rdivide    - Right array divide                ./    
    kron       - Kronecker tensor product         kron   
 
  Relational operators.
    eq         - Equal                             ==     
    ne         - Not equal                         ~=     
    lt         - Less than                          <      
    gt         - Greater than                       >      
    le         - Less than or equal                <=     
    ge         - Greater than or equal             >=     
 
  Logical operators.
                 Short-circuit logical AND         &&     
                 Short-circuit logical OR          ||     
    and        - Element-wise logical AND           &      
    or         - Element-wise logical OR            |      
    not        - Logical NOT                        ~      
    xor        - Logical EXCLUSIVE OR
    any        - True if any element of vector is nonzero
    all        - True if all elements of vector are nonzero
 
  Special characters. 
    colon      - Colon                              : 
    paren      - Parentheses and subscripting      ( )              
    paren      - Brackets                          [ ]     
    paren      - Braces and subscripting           { }          
    punct      - Function handle creation           @
    punct      - Decimal point                      .      
    punct      - Structure field access             .      
    punct      - Parent directory                   ..     
    punct      - Continuation                       ...    
    punct      - Separator                          ,      
    punct      - Semicolon                          ;      
    punct      - Comment                            %      
    punct      - Invoke operating system command    !            
    punct      - Assignment                         =
    punct      - Quote                              '      
    transpose  - Transpose                         .'
    ctranspose - Complex conjugate transpose        ' 
    horzcat    - Horizontal concatenation          [,]     
    vertcat    - Vertical concatenation            [;]     
    subsasgn   - Subscripted assignment          ( ),{ },.   
    subsref    - Subscripted reference           ( ),{ },.   
    subsindex  - Subscript index                               
 
  Bitwise operators.
    bitand     - Bit-wise AND.
    bitcmp     - Complement bits.
    bitor      - Bit-wise OR.
    bitmax     - Maximum floating point integer.
    bitxor     - Bit-wise XOR.
    bitset     - Set bit.
    bitget     - Get bit.
    bitshift   - Bit-wise shift.
 
  Set operators.
    union      - Set union.
    unique     - Set unique.
    intersect  - Set intersection.
    setdiff    - Set difference.
    setxor     - Set exclusive-or.
    ismember   - True for set member.
 
  See also ARITH, RELOP, SLASH, FUNCTION_HANDLE.
Príklad 1.3: Operátor Plus
>> help plus

 +   Plus.
    X + Y adds matrices X and Y.  X and Y must have the same
    dimensions unless one is a scalar (a 1-by-1 matrix).
    A scalar can be added to anything.  
 
    C = PLUS(A,B) is called for the syntax 'A + B' when A or B is an
    object.

 Overloaded methods
    help zpk/plus.m
    help tf/plus.m
    help ss/plus.m
    help frd/plus.m
top