Premenná je objekt, ktorý má svoj názov, typ a obsah (hodnotu).
V názve premennej, ktorý môže obsahovať až 31 znakov, sú povolené iba nasledujúce znaky:
Názov nesmie začínať číslicou. V názvoch sú rozlišované veľké a malé písmena (case-sensitive), t.j. pokus, Pokus a poKuS sú názvy troch rôznych premenných. V prípade viacslovného pomenovania premennej použite potrhovník (napr. dolna_hranica, horna_hranica, c_a, atď.)
Najčastejšia príčina chybných názvov premenných je v použití nepovolených znakov, ktoré majú v MATLABe špeciálny význam (medzera, čiarka, bodka, pomlčka, hviezdička, zátvorky, atď.)
Základným typom premennej v MATLABe je matica. Každá matica môže obsahovať akékoľvek čísla, komplexné čísla, prípadne znaky (texty, chybové hlásenia).
Z hľadiska rozmeru matíc rozlišujeme premenné na:
Na vytvorenie premennej sa používa príkaz:
>> názov_premennej = výraz.
>> a=8; >> desat_cislo=-2.145; >> skalar8=15e-2;
Desatinné čísla zadávame s desatinnou bodkou (nie čiarkou!) alebo pomocou zlomku (8.14, 13/100). Pokiaľ je pred desatinnou bodkou iba nula, môžeme ju vynechať (.52). Čísla je možné zadávať aj vo vedeckom formáte (1.6e11, 6.122e-8). Imaginárne čísla zadávame s použitím i alebo j (12i, 2-6.11j).
Maticu rozmeru mxn vytvárame pomocou hranatých zátvoriek, v ktorých uvádzame jednotlivé riadky oddelené bodkočiarkou, pričom prvky každého riadku (stĺpce) oddeľujeme medzerou alebo čiarkou (môžme ich použiť aj naraz).
V každom riadku musí byť rovnaký počet prvkov (stĺpcov)!
>> v1=[2 0.1 -3.7 4/5 0.14]; % alebo >> u1=[2,.1, -3.7, 4/5,0.14];
>> v2=[2; 0.1; -3.7; 4/5; 0.14];
>> A=[1 2; 0.1 -3; .7 1/4] A = 1.0000 2.0000 0.1000 -3.0000 0.7000 0.2500
Poznámka: príkazom priradenia je možné zmeniť hodnoty už existujúcich premenných.
>> u1 u1 = 2.0000 0.1000 -3.7000 0.8000 0.1400 >> u1=[1 -3 2]; >> u1 u1 = 1 -3 2
>> A A = 1.0000 2.0000 0.1000 -3.0000 0.7000 0.2500
Premenné, ktoré už nie sú potrebné, možno vymazať s použitím okna Workspace, resp. pomocou príkazu clear.
>> clear b a % vymaže premennú b a premennú a >> clear % vymaže všetky premenné
Ak nie je uvedený zoznam premenných, potom sa budú vymazané všetky premenné z Workspace.
Niektoré premenné sú už definované systémom MATLAB:
Ak budú použité názvy preddefinovaných premenných pri vytváraní vlastných premenných, potom ich preddefinovaná hodnota sa zruší, ale po použití príkazu clear sa preddefinované premenné vrátia do pôvodného stavu.
>> i ans = 0 + 1.0000i >> i=7 i = 7 >> clear i >> i ans = 0 + 1.0000i
Premenná ans je vytvorená automaticky, pokiaľ niektorý z príkazov potrebuje vypísať hodnotu, ktorú sme nepriradili do žiadnej premennej. Premenná ans teda obsahuje poslednú zobrazenú nepomenovanú hodnotu.
>> 2*3-5 ans = 1 >> 2*3+5; >> ans ans = 11
Niekedy je potrebné uchovať niektoré dôležité premenné pre použitie pri budúcom spustení MATLABu (napr. pri prerušení prace). Potrebujeme teda premennú dostať z pamäti na disk počítača.
Na uloženie a načítanie premenných v pracovnom priestore MATLABu je možné použiť príkazy save a load. Syntax príkazu save je nasledovná:
Príkaz save ukladá premenné prac. priestoru do binárneho MAT-súboru, ktorý je možné spätné čítať s príkazom load.
Funkcia | Opis |
---|---|
-mat | využíva binárny formát M-súboru |
-ascii | využíva 8-bitový ASCII formát |
-ascii -double | využíva 16-bitový ASCII formát |
-ascii -double -tabs | oddeľuje prvky tabulátorom |
-v4 | ukladá do formátu MATLAB verzia 4 |
-append | pripojí údaje do existujúceho MAT-súboru |
% uloženie všetkých premenných prac. priestoru do súboru premen1.mat >> save premen1 % uloženie premenných x, y, z do súboru premen2.mat >> save premen2 x y z
% Načítanie premenných z disku (súbor premen1.mat) do prac. priestoru >> load premen1 % Načítanie premenných z disku, ak má súbor inú koncovku ako .mat % (súbor nazov.dat uložený v binárnom formáte) >> load nazov.dat -mat % Načítanie údajov z ASCII súboru >> load pokus.dat % v prac. priestore sa vytvorí premenná pokus
% predpoklad: ukladané údaje musia byť v tvare matice >> A = [1 2;4 1]; >> save data.dat -ascii % Vymazanie premenných z pamäte >> clear % Zobrazenie obsahu pamäte >> who % Načítanie premenných zo súboru >> load data.dat % Zobrazenie obsahu pamäte >> whos Name Size Bytes Class data 2x2 32 double array Grand total is 4 elements using 32 bytes
Premenná | Opis |
---|---|
ans | automatická premenná na odpoveď |
computer | premenná počítačového typu |
eps | relatívna presnosť (2.2204e-016) |
i,j | imaginárne operátory |
inf | výsledok je infinitív |
NaN | nie je číslo, neexistuje daná operácia (Not-a-Number) |
nargin | vstupné číslo do funkcie |
nargout | výstupné číslo z funkcie |
why | úspešná odpoveď |
version | číslo verzie MATLABu |
pi | pi = 3.1415926... |
realmax | najväčšie reálne číslo 1.7977e+308 |
realmin | najmenšie reálne číslo 2.2251e-308 |
>> 12/0 Warning: Divide by zero. ans = Inf
>> computer ans = PCWIN
>> 0/0 ans = NaN
>> why Pete wanted it that way. >> why I told me to. >> why A young kid told me to. >> why Bill insisted on it. >> why For the love of Jack.
Výraz je postupnosť konštánt, názvov premenných, operátorov a volaní funkcií. Pokiaľ je výraz správny, potom po stisku klávesy ENTER je ihneď vyhodnotený. Vyhodnotením výrazu vzniká vždy nejaká hodnota. Výsledná hodnota výrazu môže byť uložená do premennej, alebo je uložená do premennej ans.
Pokiaľ nie je potrebné zobrazovať vypočítanú hodnotu, môže byť jej zobrazenie potlačené - za výrazom je napísaná bodkočiarka. Bodkočiarka teda okrem delenia riadkov matice slúži tiež k potlačeniu výpisu výsledku výrazu. Obvykle sa pri potlačenom výpise výsledku používa priradenie hodnoty výrazu do premennej, pretože inak vypočítaná hodnota zanikne.
Ak nie je možné výraz kvôli jeho dĺžke zapísať do jedného riadku, môžeme použiť zápis s tromi bodkami (...) na konci riadku, ktoré značia pokračovanie na ďalšom riadku. Tri bodky sa zvýrazňujú modrou farbou a znamenajú, že MATLAB má počkať s vykonaním príkazu, pretože ešte nie je celý. Pokiaľ MATLAB čaká na dokončenie príkazu, tak príkazový riadok nezačína >>.
>> s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 ... - 1/8 + 1/9 - 1/10 + 1/11 - 1/12; >> A = [1.5 -3 4.1; 2... 1.14 5 0.2; 7 15.1 8/31 0]; >> A = [1.5 -3 4.1; 2... 1.14 5 0.2; 7 15.1... 8/31 0];
Príkaz, ktorý sa práve vykonáva, môže byť ukončený pomocou klávesovej skratky CTRL+C. Väčšinou sa CTRL+C používa v prípadoch nekonečného cyklu alebo výpisu príliš veľkej matice.
Doteraz boli príkazy ukončované pomocou klávesy ENTER, ktorá zároveň odoslala príkaz k spracovaniu. Občas je ale potrebné odoslať k spracovaniu viac príkazov naraz. V takomto prípade môžu byť použité buď M-súbory, alebo zápis viac príkazov na jeden riadok, pričom na oddelenie jednotlivých príkazov sa používa čiarka alebo bodkočiarka (čiarka iba oddeľuje príkazy, bodkočiarka navyše potlačuje výpis ich výsledkov).
>> m=8, n=3; vysledok=3*m+0.5*n m = 8 vysledok = 25.5000
Reťazce (anglicky character arrays alebo strings) sú v podstate vektory, ktoré obsahujú znaky anglickej abecedy. Nedoporučuje sa používať slovenské znaky obsahujúce diakritiku, pretože býva problém s ich správnym zobrazovaním.
Na vytvorenie reťazca slúžia apostrofy, do ktorých sa zapisuje obsah reťazca (napríklad 'text' alebo 'Toto je dlhy text.'), pričom takto vytvorený reťazec môže byť uložený do premennej:
>> text = 'lubovolny text' text = lubovolny text >> nazov = 'text s diakritikou = ľubovoľný text' nazov = text s diakritikou = ľubovoľný text
Vo Workspace sa reťazec objaví ako premenná typu char array (doteraz boli používané iba čísla - double array).
Poznámka: reťazce možno ukladať aj do matíc, ale je nutné, aby všetky riadky (= reťazce) mali rovnakú dĺžku! Doplňuje sa väčšinou medzerami.
>> mena = ['Ivan '; 'Jana '; 'Peter'; 'Eva '; 'Ivan '] mena = Ivan Jana Peter Eva Ivan
>> mena = ['Eva'; 'Ivan']
??? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.
Pokiaľ máme reťazec uložený v premennej, môže byť vypísaný rovnakým spôsobom ako obsah číselnej preomennej, teda zadaním názvu premennej.
Existujú tiež funkcie, ktoré vypisujú zadaný reťazec, a to funkcia disp(), ktorá má jeden argument. Argumentom môže byť text alebo názov premennej.
>> disp('ahoj') ahoj >> disp(text) lubovolny text
Ďalšou funkciou vypisujúcou zadaný reťazec je funkcia error(), ktorej argumentom je chybové hlásenie (vypisuje sa červenou farbou). Táto funkcia navyše ukončuje vykonávanie aktuálneho príkazu (preto sa používa vnútri funkcií a skriptov).
>> error('Chyba')
??? Chyba
Poznámka: keďže je reťazec vektor zložený zo znakov, môže sa s ním pracovať znak po znaku. Ďalšou možnosťou je využiť funkcie MATLABu, ktoré ponúkajú porovnávanie reťazca (napr. funkcia strcmp), prevod na veľké alebo malé písmená (upper a lower), konverzia reťazca na čísla a naopak (napr. str2num a num2str) , atď. (viac: help strfun).
Komentáre slúžia väčšinou k vysvetleniu významu jednotlivých príkazov, skriptov alebo funkcií. Komentáre pri užívateľských funkcia navyše slúžia ako nápoveda, ktorú vie MATLAB zobrazovať napr. príkazom help názov (jedná sa o komentáre definované na začiatku skriptov).
Komentár začína znakom % a končí spolu s koncom riadku. Text komentára býva označený zelenou farbou (pokiaľ nie je zvolená iná farba).
Všetky komentáre sú MATLABom ignorovaní, t.j. nie sú vyhodnocované.
>> x = 10; % Vytvorenie premennej x, bez výpisu
Operátory v MATLABe môžeme rozdeliť do troch základných skupín:
Operátory, ktoré nie je možné začleniť do žiadnej skupiny sa nazývajú špeciálne znaky. V MATLABe je možné využívať nasledovné operátory a špeciálne znaky:
Znak | Opis | Znak | Opis |
---|---|---|---|
+ | plus | ... | pokračovanie |
- | mínus | ; | bodkočiarka |
* | maticové násobenie | , | čiarka |
.* | násobenie prvkov | % | komentár |
^ | umocnenie | ! | výkričník |
.^ | umocnenie prvkov | ' | transpozícia |
Kron | násobenie Kronecker | .' | |
\ | ľavé delenie | = | priradenie |
/ | pravé delenie | == | zhodnosť |
./ | pravé delenie prvkov | <> | relačné operátory |
: | dvojbodka | & | logický AND |
[] | hranaté zátvorky | | | logický OR |
() | okrúhle zátvorky | ~ | logická negácia |
. | desatinná bodka | XOR | log. exclusive OR |
.. | rodičovský adresár |
Názov | Syntax | Opis |
---|---|---|
unárny plus | +a1 | |
unárny mínus | -a1 | |
transpozícia a konjugovanosť | a1' | |
transpozícia | a1.' |
Názov | Syntax | Opis |
---|---|---|
sčítanie | a1+a2 | |
odčítanie | a1-a2 | |
násobenie matíc | a1*a2 | |
násobenie po prvkoch | a1.*a2 | |
umocnenie matice | a1^a2 | |
umocnenie po prvkoch | a1.^a2 | |
delenie matíc | a1/a2 | |
delenie po prvkoch | a1./a2 | |
delenie matíc zľava | a1\a2 | |
delenie po prvkoch zľava | a1.\a2 |
Názov | Syntax | Opis |
---|---|---|
vytváranie aritmetických postupností | i:k:j i:j |
|
Názov | Syntax | Opis |
---|---|---|
menší | < |
|
menší alebo rovný | <= | |
väčší | > | |
väčší alebo rovný | >= | |
rovnajúci sa | == | |
nerovnajúci sa | ~= |
Upozornenie: je veľký rozdiel medzi == (porovnanie) a = (priradenie).
>> a = 2 a = 2 >> a == 2 ans = 1
Poznámka: relačné operátory sa využívajú najmä v príkazoch cyklenia a vetvenia (if, for, while, switch).
A=[2 7 6;9 0 -1;3 1 6]; B=[8 0.2 0;-3 2 5;4 -1 7]; A < B ans = 1 0 0 0 1 1 1 0 1
Názov | Syntax | Opis |
---|---|---|
negácia | ~a1 |
|
Nasledujúca tabuľka zobrazuje možné stavy dosiahnuté negáciou.
Negácia | |
---|---|
a1 | ~a1 |
nenulové | 0 |
0 | 1 |
Názov | Syntax | Opis |
---|---|---|
logický súčin | a1&a2 |
|
logický súčet | a1|a2 |
Nasledujúca tabuľka zobrazuje možné stavy dosiahnuté logickým súčinom a súčtom.
Logický súčin a súčet | |||
---|---|---|---|
a1 | a2 | a1&a2 | a1|a2 |
nenulové | nenulové | 1 | 1 |
nenulové | 0 | 0 | 1 |
0 | nenulové | 0 | 1 |
0 | 0 | 0 | 0 |
a = [1 0 4 2 0 5]; b = [5 3 1 0 0 7]; % operácia AND a & b ans = 1 0 1 0 0 1 % operácia OR a | b ans = 1 1 1 1 0 1 % operácia NOT ~ b ans = 0 0 0 1 1 0
Poradie, v akom sa budú jednotlivé časti výrazu vyhodnocovať, môžeme podľa potreby zadať tým, že použijeme guľaté zátvorky na ohraničenie všetkých potrebných častí výrazu. Nie vždy sú zátvorky potrebné, pretože každý z vyššie uvedených operátorov má pevne dané poradie vyhodnocovania (prioritu). Operátory v tabuľke sú zoradené zhora dolu podľa klesajúcej priority.
Postupnosť pravidiel vyhodnocovania aritmetických operátorov:
Priorita | Operátor | Poznámka |
---|---|---|
1. | () | zátvorky |
2. | .', .^, ', ^ | transpozícia, umocnenie, transpozícia+konjugovanosť, maticové umocnenie |
3. | +, -, ~ | unárny plus, unárny mínus, negácia |
4. | .*, ./, .\, *, /, \ | násobenie po prvkoch, delenie po prvkoch, delenie po prvkoch zľava, násobenie matíc, delenie matíc, delenie matíc zľava |
5. | +, - | sčítanie, odčítanie |
6. | : | dvojbodka |
7. | <, <=, >, >=, ==, ~= | relačné operátory |
8. | & | logický súčin, AND |
9. | | | logický súčet, OR |
Operátory sú vyhodnocované zľava doprava.
Príkaz | Opis |
---|---|
all | pravda ak všetky prvky vektora sú pravdivé |
any | pravda ak žiadny prvok vektora nie je pravdivý |
exist | kontroluje, kde existujú premenné alebo funkcie |
find | hľadá prvky, kde výraz je pravdivý |
finite | pravda pre konečné prvky |
isempty | pravda pre prázdnu maticu |
isieee | pravda pre IEEE floating point aritmetiku |
isinf | pravda ak prvok je infinitív |
isnan | pravda ak prvok nie je číslo |
issparse | pravda pre sparse maticu |
isstr | pravda pre textový reťazec |
% reťazec alebo infinitív a = [1 -2000 3 inf 89]; b = ['hello' 'ciao' 'inf']; isstr(a) ans = 0 isstr(b) ans = 1 isinf(a) ans = 0 0 0 1 0 isinf(b) ans = 0 0 0 0 0 0 0 0 0 0 0 0 % funkcia XOR a = [1 0 4 2 0 5]; b = [5 3 1 0 0 7]; xor(a,b) ans = 0 1 0 1 0 0 % stĺpce s nenulovými prvkami A = [0 1 2 5;3 4 0 7]; all(A) ans = 0 1 0 1
% Delenie prvkov vektorov y a x nastane,
% ak všetky prvky vektora x sú nenulové
if all(x)
d = y./x
end