You are on page 1of 14

Лекција 0 – Увод у Матлаб

0.1. Командни прозор


0.2. Едитор кода и основна подешавања
0.3. Филозофија програмирања
0.4. Основне команде
0.5. Извршавање кода и делова кода

У оквиру овог кратког увода упознаћемо се са основама рада у МАТЛАБ-у и основним подешавањима која
су неопходна како би се програми могли лакше реализовати. Први део овог увода посвећен је самом
прорамском окружењу и његовим функционалностима, док је други део посвећен неким основним командама
и филозофији програмирања у МАТЛАБ-у.

0.1. Командни прозор


Након стартовања МАТЛАБА отвара се прозор као на слици 0.1. За демонстрације и примере коришћена је
верзија МАТЛАБ-а R2010a, међутим за већину основних потреба разлике између верзија готово да и не постоје.

Бројем 1 означена је командна линије. На овом месту се откуца команда и притиском на даугме ентер команда
се извршава. На пример ако хоћемо да променљивој а доделимо вредност 5, у командној линији откуцамо а = 5
и притиснемо ентер. Резултат команде је да је променљива а добила вредност 5 и то се исписује непосредно
испод команде.

Радни простор тј workspace приказује све именоване променљиве које су тренутно актуелне у систему (види
слику 0.2). Након извршавања команде а=5 у систему се налази променљива а која има вредност 5. Ово је згодно
за брз увид у стање меморије након извршавања неке команде. Ако два пута кликнете на променљиву у
workspace-у отвориће вам се табела са вредностима те променљиве. У овом случају то је смао једна вредност тј
број 5 (детаљније о променљивима у 0.3.2).

Област означена са 3 представља историју команди стим што су на почетку најскорије коришићене. Мени лично
ова могућност је ретко требала, али када јесте била је веома корисна.
Писање кода у командној линији може да послужи за неке успутне или помоћне команде, међутим писање
целокупног кода било ког програма у командној линији је веома напорно. Због тога ћемо одмах прећи на
програмирање у скриптама и функцијама.

Слика 0. 1.
Слика 0. 2.

0.2. Едитор кода и основна подешавања


Едитор кода отварамо креирањем неких од понуђених фајлова: најчеће су нам потребне скрипте тако да
правимо избор као на слици 0.3. Тада нам се отвара прозор као на слици 0.4.
Слика 0. 3.
Слика 0. 4.

0.2.1. Подешавања едитора кода


Ако сачувамо фајл, предодређено је да се он чува у фолдеру My Documents/MATLAB међутим, ради наше личне
организације, готово никад нећемо желети да сачувамо своје фајлове ту, него у неком другом фолдеру који смо
наменили за кодове тог пројекта. Наравно, то можемо да учинимо мењањем путање приликом чувања фајла,
али да би програм радио без проблема потребно је да урадимо још нешто: Current folder у основном прозору
МАТЛАБ-а треба да подесимо на фолдер у коме желимо да чувамо све фајлове (сл. 0.5.)

Слика 0. 5.

Са стране се онда види преглед фајлова који се налазе у том фолдеру.


0.2.2. Основне опције едитора кода
На слици 0.6. обележене су најчешће коришћене опције.

Слика 0. 6.

6 – Нови фајл.

7 – Представља опције за делимично извршавање кода по ћелијама. О ћелијама и опцијама за извршавање


команди биће речи касније у делу 0.5. извршавање кода и делова кода.

8 – МАТЛАБ поседује свој Debag. Ово је једна од опција која је врло корисна, чак и неопходна за било који већи
пројекат. За сада се нећем задржавати на њој, него ће више пажње овоме бити посвећено у наредним
лекцијама.

9 – RUN или извршавање целокупне скрипте (програма). Исти ефекат има скраћеница F5.

10 – Овај квадратић указује на снтаксну исправност програма: зелен је када је све потпуно исправно, наранџаст
када има неких упозорења (ово су углавном неке напомене матлаба како би програмер обратио пажњу и
углавном се могу игнорисати), а црвен када има синтаксних грешака. Програм који има синтаксне грешке не
може се извршити.

Сада када смо се упознали са најважнијим деловима окружења, можемо да пређемо на програмирање 
0.3. Филозофија програмирања
У овом делу биће представљени основни принципи на којим је програмирање у МАТЛАБУ засновано:
сматрам да је потребно да видимо разлике и специфичности у односу на друге програмске језике јер то
омогућава касније лакше и брже проналажење грешака у коду и решаање евентуалних проблема у већим
пројектима.

0.3.1. Типови променљивих


Све променљиве овде се памте у меморији као матрице: сваки реалан број је на пример матрица
димензија 1х1 и запамћена је као реалан број прецизности double. Све нумеричке променљиве у матлабу се по
правилу чувају као double, a само понекад се појаве и целобројне променљиве у формату unit8 (нпр када се
учитавају слике). Што се осталих типова тиче, постоје разноразни, али се може десити да матлаб не зна ни да их
сабере. Кога занима може да прочита више у helpу МАТЛАБ-а. Од осталих типова биће користан понекад char и
за сада не више од тога.

Карактеристично за матлаб је да променљиве није потребно дефинисати по типу, него оне преузимају тип
на основу тога што им је додељено. Такође у току истог програма променљиве могу мењати величину тј димензије
и такође може се променити тип: нешто што је било на једном месту број на другом месту може постати стринг
исл. Наравно, ово није баш препоручљиво, јер може доћи до забуна у програму како се која променљива зове,
нарочито ако их има више и ако је код подугачак.

0.3.2. Матрица, вектор и приступ


Позабавимо се мало детаљније како матлаб ради са матрицама: дакле то је основна форма за памћење
било које променљиве. Ако је матрица у формату 1хN или Nх1 тј матрица врста и матрица колона називаћемо је
вектором. Синтакса за прављење најобичније матрице изгледа овако (ове команде пишем у командној линији):

>> a = [1 1 1]

a =

1 1 1
Добили смо матрицу врсту. За матрицу колону синтакса је следећа:
>> b = [2;2;2]

b =

2
2
2
Сада је ово матрица колона. Ако покушамо да их саберемо, МАТЛАБ ће пријавити грешку:

>> a+b
??? Error using ==> plus
Matrix dimensions must agree.

Међутим ако извршим транспоновање друге матрице, сабирање је могуће:

>> a+b'

ans =

3 3 3
Занимљиво је помножити ове две матрице:

>> a*b

ans =

Ово је класичан производ матрица. Међутим понекад нам је потребно да се множи сваки елемент са својим
одговарајућим. Тада је резултат матрица истих димензија као a и b:

>> a.*b'

ans =
2 2 2
То сам постигла додавањем тачке испред знака *. На сличан начин када желим да степенујем елементе
матрице, један по један, а не саму матрицу, такође додајем знак тачка испред знака за степеновање:

>> c = [1 2 3]

c =

1 2 3

>> c^2
??? Error using ==> mpower
Inputs must be a scalar and a square matrix.

>> c.^2

ans =

1 4 9

Напомена: ans је уграђена променљива МАТЛАБ окружења и има вредност последње извршене операције.

Обичну матрицу креирамо овако:

>> d = [7 5 4; 2 9 8]

d =

7 5 4
2 9 8
Приступ елементима матрице врши се на следећи начин:

>> d(1,3)

ans =

4
Издвајање реда из матрице. Ако желимо да издвојимо цео ред матрице (нпр други ред):

>> d(2,:)

ans =

2 9 8
Издвајање колоне из матрице. Ако желимо да издвојимо целу колону из матрице (нпр трећу колону)

>> d(:,3)

ans =

4
8
Издвајање неких елемента:

>> d(1,2:3)

ans =

5 4
0.4. Основне команде у МАТЛАБу:
Ради демонстрације основних команди у МАТЛАБу прећићемо у едитор кода. Код је дат у наставку као и у
засебном фајлу l04osnovneKomande.m.

Напомена: Како се резултат сваке команде не би исписивао на командној линији, иза команде је потребно
додати ‘;’.

% ~.~.~.~.~.~.~.~.~.~ Osnove MATLAB - a ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~


% ~ LEKCIJA 0: UVOD U MATLAB
% ~ Autor: msc Milana Milosevic
% ~ Realziacija: Studentska unija Elektrotehnickog fakulteta
% ~ Godina: 2012.
% ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~
% 0.4. Osnovne komade
%
% Komentari u matlab skriptama pocinju sa znakom procenta. Sve sto je iza
% ovog znaka smatra se komentarom i kompajler ga ne uzima u obzir. U ovom
% kratkom kodu pogledacemo najosnovnije i najcesce koriscene naredbe. Sam
% kod nema mnogo smisla sam za sebe vec se koristi samo u demonstrativne
% svrhe

clear all; % brisem workspace tj sve sto je u njemu zabelezeno


close all; % zatvaram sve prozore grafika koji su eventualno
% otvoreni od nekog ranijeg izvrsavanja
clc; % brisem komandnu liniju kako bih imala bolji pregled
% sta se desava tokom programa

a = 5; % dodela vrednosti promenljivoj


b = [1 5 9; 2 7 8]; % dodela matrice
c = sin(b(1,:))+cos(b(2,:))% pravljenje matrice vrste sa nekim; namerno
% sam ostavila bez ; da bi videla rezultat u komandnoj
% liniji
% izracunavanjima tj vektora
d = zeros(2,3); % kreiram u memoriji matricu nula dimenzija 2x3

[m,n] = size(b); % ova naredba promenljivima m i n dodeljuje broj redova


% tj kolona matrice b
N = length(c); % duzina vektora c
for i = 1:m % for petlja po promenljivoj i od 1 do m sa korakom 1
for j = 1:n % for petlja po j od 1 do n sa korakom 1
if (i+j<5) % ako je i+j manje od 5
d(i,j) = a*b(i,j);
else % inace
d(i,j) = c(j);
end % kraj if
end % kraj for naredbe po j
end % kraj for naredbe po i

% Sada cu da rezultate operacija ispisem na komandnoj liniji. Ovo nije


% pravilan nacin za ispisivanje ali je brz nacin da se vidi koji su
% rezultati
a
b
c
d

Испис на командној линији:

c =

0.4253 -0.2050 0.2666

a =

b =

1 5 9
2 7 8
c =

0.4253 -0.2050 0.2666

d =

5.0000 25.0000 45.0000


10.0000 35.0000 0.2666

0.5. Извршавање кода и делова кода


Цео код може се извршити са F5 или пртиском на зелено дугме (број 9 на слици 0.6.). Веома често није
потребно да извршимо цео код из почетка него само одређене делове а којима радимо. Нпр ако је први део
програма учитавање података, а даље израчунавања која желимо да урадимо/ поправимо, згодно је да се део
са учитавањем изврши само једном, а онда сваки пут када модификујемо израчунавања пустимо само тај део.
То нам омогућавају две опције:

1. Селектујемо мишем узастопне команде које желимо да извршимо и притиснемо дугме F9. Извршавају се
само селектоване команде
2. Формирамо ћелије у коду. Ово се врши тако што на почетак сегмента који желимо да издвојимо поставимо
два узаступна процента (%%). Извршавање тог дела кода врши се са постављањем курсора негде у ћелију
(МАТЛАБ је онда обележи жутом бојом) и притиском на Ctrl+Enter или кликом на прву иконицу под бројем 7
са слике 0.6.

Код за тестирање се може наћи у фајлу l05.m.

You might also like