ПРОГРАМИРАЊЕ
ЛС2013
Владимир Витанов   ПРЕДАВАЊА




                   #3
01.03.2013                     В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   2




1
Вовед во
                         1. Вовед
                         2. Работна околина
MATLAB                   3. Променливи и задавање
                            вредности
Запознавање со
основните поими,
работната околина и
едноставна употреба на
MATLAB.                  4. Изрази
                         5. Знаци и кодирање
                         6. Вектори и матрици
01.03.2013                     В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   3




   1.4.5. ТИПОВИ
   single, double, integer, character, logical…
01.03.2013                           В.Витанов - ПРОГРАМИРАЊЕ ЛС2013      4




Типови/класи во MATLAB
Секој израз или променлива е од одреден тип (класа).
                                         Тип/класа
       реални броеви (пр. 5.3)           single и double.
       цели броеви                       int8, int16, int32 и int64
       цели броеви, без знак             uint8, uint16, uint32 и uint64
       единечни знаци (characters)       char
       (пр.„x“) или секвенца знаци
       (string)(пр.„broj“)


Подразбиран (default) тип за броеви во MATLAB е double.
Можно е, по потреба, да се врши конверзија на вредностите
од еден во друг вид (type casting)
01.03.2013        В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   5




Случајни броеви
01.03.2013          В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   6




   1.5. ЗНАЦИ И КОДИРАЊЕ
   3 наспроти ‘3’   >> numequiv = double(‘a’)
                    numequiv =
                            97
01.03.2013     В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   7




Знаци и кодирање
01.03.2013                   В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   8




   1.6. ВЕКТОРИ И МАТРИЦИ
   ... од аспект на MATLAB
01.03.2013                В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   9




Вектори и матрици
Преставуваат групи/сетови на вредности од ист тип.
Векторите можат да бидат во вид на ред (row) или колона
(column). Матриците се табели од вредности со димензии
 𝑟 × 𝑐. Скаларите се матрици со димензии 1 × 1.
Значи векторите и скаларите се само специјални видови на
матрици. Може да се каже дека во MATLAB сé е матрица!
01.03.2013                В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   10




Креирање на ред-вектори
Постојат повеќе начини за креирање ред-вектори.
Најдиректен начин е со ставање на вредностите на
елементите од векторот во средни загради, одвоени со
празно место или запирка:
01.03.2013                  В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   11




Креирање на ред-вектори 2
Користење на знакот „:“ (две точки - colon)
Знакот „:“ може да се користи за
креирање вектори со рамноме-
рно распределени елементи (при
што не се потребни средните
загради):

Може да се посочи и големината
на „чекорот“, односно разликата
меѓеу елементите на векторот
01.03.2013                В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   12




Креирање на ред-вектори 3
Вектор може да се креира и од веќе дефинираните вектори:




Оваа операција може да се нарече „поврзување“ или
„комбинирање“ (concatenating)
01.03.2013                В.Витанов - ПРОГРАМИРАЊЕ ЛС2013       13




Повикување на елементите од векторите 1
Елемените на секој вектор се нумерираат секвенционално
почнувајќи од бројот 1. Бројот на секој елемент се вика
индекс.
На пример, новокреираниот вектор од претходниот пример:
    индекс   1   2    3   4        5       6        7       8   9
             1   2    3   4        1       3        5       7   9


Може да пристапиме кон
одреден елемент од векторот
со користење на неговиот
индекс во средни загради:
01.03.2013                В.Витанов - ПРОГРАМИРАЊЕ ЛС2013       14




Повикување на елементите од векторите 2
    индекс   1   2    3    4       5       6        7       8   9
             1   2    3    4       1       3        5       7   9


Дел од вектор (кој сам по себе исто така претставува
вектор) може да се добие со користење на операторот „:“.
На пример, следната наредба ќе ги одвои елементите од 4
до 6 во посебен вектор:
01.03.2013                 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013       15




Повикување на елементите од векторите 3
    индекс   1    2    3       4    5       6        7       8   9
             1    2    3       4    1       3        5       7   9


Било кој вектор може да се
користи за индексите на
друг вектор (индекс-вектор):


Векторот [1 5 8] се вика индекс-вектор, зошто ги содржи
индексите на елементите од оригиналниот вектор кои ги
повикуваме.
01.03.2013                В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   16




Менување на елементите од векторите 1
Вредноста сместена во некој елемент од векторот може да
се смени користејќи го индексот на елементот.

Така, ако претходно:


Тогаш:
01.03.2013                  В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   17




Менување на елементите од векторите 2
 Ако се повика елемент со           Ако пак има „растојание“
 индекс кој сеуште не               од повиканиот елемент до
 постои, векторот ќе биде           последниот елемент на
 проширен:                          векторот, автоматски се
                                    додаваат 0 за да се
                                    пополнат „празните места“:
01.03.2013                В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   18




Кратка вежба:
Кој би бил резултатот од внесувањето на следната секвенца
од наредби:
01.03.2013               В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   19




Креирање на вектор-колона
Еден начин на креирање             Друг начин на креирање
вектор-колона е со                 вектор-колона е со
директно задавање на               транспонирање на ред-
вредностите, одводени              вектор (со што може да се
со „;“                             користи и операторот „:“ )
01.03.2013                В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   20




Креирање на матрични променливи 1
Креирањето на матрица едноставно е генерализирање на
креирањето вектор-ред и вектор-колона. Значи,
вредностите во еден ред се одвојуваат со празни места или
запирки, а редовите меѓусебно се одделуваат со точка-
запирка.
01.03.2013               В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   21




Креирање на матрични променливи 2
Секогаш мора да бидат дефинирани ист број на вредности
во еден ред – во спротивно се јавува грешка.
01.03.2013                  В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   22




Креирање на матрични променливи 3
При креирањето матрици,            Редовите од матрицата
исто така може да се               може да се одвојат и со
користи операторот за              Enter место со точка-
итерација „:“ (итератор).          запирка:
01.03.2013                В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   23




Матрици од случајни броеви (rand)
Матрици од случајни броеви може да се креираат со
користење на функцијата     . Со задавање на еден
аргумент , се креира матрица 𝑛 × 𝑛, а со задавање на два
аргументи се креира матрица со тие димензии (колку што
се аргументите).
01.03.2013                 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   24




Специјални матрици (zeros, ones)
Постојат повеќе функции за креирање на одредени
специјални матрици. Едни од најкористените се:

•            креирање матрица чии елементи имаат вредност 0.
•            креирање матрица чии елементи имаат вредност 1.
01.03.2013                  В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   25


Повикување на елементите на матриците
1
За да се повика одреден елемент од матрицата, се користат
индексите на редот и колоната во мали загради (секогаш прво
редот, а потоа колоната) – индексирање со субскрипти

Пример: Креирање на матрица
   , а потоа повикување на
вредноста од вториот ред и
третата колона
01.03.2013                  В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   26


Повикување на елементите на матриците
2
За да се повика одреден елемент од матрицата, се користат
индексите на редот и колоната во мали загради (секогаш прво
редот, а потоа колоната) – индексирање со субскрипти

Пример: Креирање на матрица
   , а потоа повикување на
вредноста од вториот ред и
третата колона
Можно е да се повика и
одреден дел/сегмент од
матрицата (подматрица):
01.03.2013                  В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   27


Повикување на елементите на матриците
3
За да се повика одреден елемент од матрицата, се користат
индексите на редот и колоната во мали загради (секогаш прво
редот, а потоа колоната) – индексирање со субскрипти

Пример: Креирање на матрица
   , а потоа повикување на
вредноста од вториот ред и
третата колона
Со користење на „:“ може да се
повика цел ред ...
01.03.2013                  В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   28


Повикување на елементите на матриците
3
За да се повика одреден елемент од матрицата, се користат
индексите на редот и колоната во мали загради (секогаш прво
редот, а потоа колоната) – индексирање со субскрипти

Пример: Креирање на матрица
   , а потоа повикување на
вредноста од вториот ред и
третата колона
Со користење на „:“ може да се
повика цел ред или колона
01.03.2013                 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   29


Повикување на елементите на матриците
4
Елемент од матрицата може да се повика и со еден индекс.
Во тој случај матрицата се третира како нејзините колони да
се поставени една врз друга – линеарно индексирање
01.03.2013                В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   30


Модифицирање на елементите на
матриците
Елемент од матрицата може да
се модифицира ако му се
додели нова вредност.




Може да се смени и цел ред од
матрицата
01.03.2013                 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   31




Додавање редови/колони на матриците
Матрицата може да се зголеми
ако и се додаде цел ред/колона
со индекс кој во моментот не
постои


Како и кај векторите, ако има
„растојание“ од последниот
индекс, до новот, ќе се додадат
редови/колони нули (0)
01.03.2013                  В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   32




Димензии (                   и                ) - вектори
Функциите            и
        се користат за да
се добијат димензиите на
векторот .
01.03.2013                    В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   33




Димензии (                     и                ) - матрици
Функцијата         ги дава
броевите на редови и
колони на матрицата .
Резултатот од оваа
наредба е вектор 1 × 2


Функцијата              кај
матриците го дава бројот
на редови или колони – и
тоа оној кој е поголем.
01.03.2013                  В.Витанов - ПРОГРАМИРАЊЕ ЛС2013   34




Кратка вежба:
Како може да се креира
матрица од нули, кој има
иста големина како некоја
друга матрица     ?

2013.03.01 Програмирање - Предавања

  • 1.
  • 2.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 2 1 Вовед во 1. Вовед 2. Работна околина MATLAB 3. Променливи и задавање вредности Запознавање со основните поими, работната околина и едноставна употреба на MATLAB. 4. Изрази 5. Знаци и кодирање 6. Вектори и матрици
  • 3.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 3 1.4.5. ТИПОВИ single, double, integer, character, logical…
  • 4.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 4 Типови/класи во MATLAB Секој израз или променлива е од одреден тип (класа). Тип/класа реални броеви (пр. 5.3) single и double. цели броеви int8, int16, int32 и int64 цели броеви, без знак uint8, uint16, uint32 и uint64 единечни знаци (characters) char (пр.„x“) или секвенца знаци (string)(пр.„broj“) Подразбиран (default) тип за броеви во MATLAB е double. Можно е, по потреба, да се врши конверзија на вредностите од еден во друг вид (type casting)
  • 5.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 5 Случајни броеви
  • 6.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 6 1.5. ЗНАЦИ И КОДИРАЊЕ 3 наспроти ‘3’ >> numequiv = double(‘a’) numequiv = 97
  • 7.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 7 Знаци и кодирање
  • 8.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 8 1.6. ВЕКТОРИ И МАТРИЦИ ... од аспект на MATLAB
  • 9.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 9 Вектори и матрици Преставуваат групи/сетови на вредности од ист тип. Векторите можат да бидат во вид на ред (row) или колона (column). Матриците се табели од вредности со димензии 𝑟 × 𝑐. Скаларите се матрици со димензии 1 × 1. Значи векторите и скаларите се само специјални видови на матрици. Може да се каже дека во MATLAB сé е матрица!
  • 10.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 10 Креирање на ред-вектори Постојат повеќе начини за креирање ред-вектори. Најдиректен начин е со ставање на вредностите на елементите од векторот во средни загради, одвоени со празно место или запирка:
  • 11.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 11 Креирање на ред-вектори 2 Користење на знакот „:“ (две точки - colon) Знакот „:“ може да се користи за креирање вектори со рамноме- рно распределени елементи (при што не се потребни средните загради): Може да се посочи и големината на „чекорот“, односно разликата меѓеу елементите на векторот
  • 12.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 12 Креирање на ред-вектори 3 Вектор може да се креира и од веќе дефинираните вектори: Оваа операција може да се нарече „поврзување“ или „комбинирање“ (concatenating)
  • 13.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 13 Повикување на елементите од векторите 1 Елемените на секој вектор се нумерираат секвенционално почнувајќи од бројот 1. Бројот на секој елемент се вика индекс. На пример, новокреираниот вектор од претходниот пример: индекс 1 2 3 4 5 6 7 8 9 1 2 3 4 1 3 5 7 9 Може да пристапиме кон одреден елемент од векторот со користење на неговиот индекс во средни загради:
  • 14.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 14 Повикување на елементите од векторите 2 индекс 1 2 3 4 5 6 7 8 9 1 2 3 4 1 3 5 7 9 Дел од вектор (кој сам по себе исто така претставува вектор) може да се добие со користење на операторот „:“. На пример, следната наредба ќе ги одвои елементите од 4 до 6 во посебен вектор:
  • 15.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 15 Повикување на елементите од векторите 3 индекс 1 2 3 4 5 6 7 8 9 1 2 3 4 1 3 5 7 9 Било кој вектор може да се користи за индексите на друг вектор (индекс-вектор): Векторот [1 5 8] се вика индекс-вектор, зошто ги содржи индексите на елементите од оригиналниот вектор кои ги повикуваме.
  • 16.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 16 Менување на елементите од векторите 1 Вредноста сместена во некој елемент од векторот може да се смени користејќи го индексот на елементот. Така, ако претходно: Тогаш:
  • 17.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 17 Менување на елементите од векторите 2 Ако се повика елемент со Ако пак има „растојание“ индекс кој сеуште не од повиканиот елемент до постои, векторот ќе биде последниот елемент на проширен: векторот, автоматски се додаваат 0 за да се пополнат „празните места“:
  • 18.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 18 Кратка вежба: Кој би бил резултатот од внесувањето на следната секвенца од наредби:
  • 19.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 19 Креирање на вектор-колона Еден начин на креирање Друг начин на креирање вектор-колона е со вектор-колона е со директно задавање на транспонирање на ред- вредностите, одводени вектор (со што може да се со „;“ користи и операторот „:“ )
  • 20.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 20 Креирање на матрични променливи 1 Креирањето на матрица едноставно е генерализирање на креирањето вектор-ред и вектор-колона. Значи, вредностите во еден ред се одвојуваат со празни места или запирки, а редовите меѓусебно се одделуваат со точка- запирка.
  • 21.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 21 Креирање на матрични променливи 2 Секогаш мора да бидат дефинирани ист број на вредности во еден ред – во спротивно се јавува грешка.
  • 22.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 22 Креирање на матрични променливи 3 При креирањето матрици, Редовите од матрицата исто така може да се може да се одвојат и со користи операторот за Enter место со точка- итерација „:“ (итератор). запирка:
  • 23.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 23 Матрици од случајни броеви (rand) Матрици од случајни броеви може да се креираат со користење на функцијата . Со задавање на еден аргумент , се креира матрица 𝑛 × 𝑛, а со задавање на два аргументи се креира матрица со тие димензии (колку што се аргументите).
  • 24.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 24 Специјални матрици (zeros, ones) Постојат повеќе функции за креирање на одредени специјални матрици. Едни од најкористените се: • креирање матрица чии елементи имаат вредност 0. • креирање матрица чии елементи имаат вредност 1.
  • 25.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 25 Повикување на елементите на матриците 1 За да се повика одреден елемент од матрицата, се користат индексите на редот и колоната во мали загради (секогаш прво редот, а потоа колоната) – индексирање со субскрипти Пример: Креирање на матрица , а потоа повикување на вредноста од вториот ред и третата колона
  • 26.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 26 Повикување на елементите на матриците 2 За да се повика одреден елемент од матрицата, се користат индексите на редот и колоната во мали загради (секогаш прво редот, а потоа колоната) – индексирање со субскрипти Пример: Креирање на матрица , а потоа повикување на вредноста од вториот ред и третата колона Можно е да се повика и одреден дел/сегмент од матрицата (подматрица):
  • 27.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 27 Повикување на елементите на матриците 3 За да се повика одреден елемент од матрицата, се користат индексите на редот и колоната во мали загради (секогаш прво редот, а потоа колоната) – индексирање со субскрипти Пример: Креирање на матрица , а потоа повикување на вредноста од вториот ред и третата колона Со користење на „:“ може да се повика цел ред ...
  • 28.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 28 Повикување на елементите на матриците 3 За да се повика одреден елемент од матрицата, се користат индексите на редот и колоната во мали загради (секогаш прво редот, а потоа колоната) – индексирање со субскрипти Пример: Креирање на матрица , а потоа повикување на вредноста од вториот ред и третата колона Со користење на „:“ може да се повика цел ред или колона
  • 29.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 29 Повикување на елементите на матриците 4 Елемент од матрицата може да се повика и со еден индекс. Во тој случај матрицата се третира како нејзините колони да се поставени една врз друга – линеарно индексирање
  • 30.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 30 Модифицирање на елементите на матриците Елемент од матрицата може да се модифицира ако му се додели нова вредност. Може да се смени и цел ред од матрицата
  • 31.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 31 Додавање редови/колони на матриците Матрицата може да се зголеми ако и се додаде цел ред/колона со индекс кој во моментот не постои Како и кај векторите, ако има „растојание“ од последниот индекс, до новот, ќе се додадат редови/колони нули (0)
  • 32.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 32 Димензии ( и ) - вектори Функциите и се користат за да се добијат димензиите на векторот .
  • 33.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 33 Димензии ( и ) - матрици Функцијата ги дава броевите на редови и колони на матрицата . Резултатот од оваа наредба е вектор 1 × 2 Функцијата кај матриците го дава бројот на редови или колони – и тоа оној кој е поголем.
  • 34.
    01.03.2013 В.Витанов - ПРОГРАМИРАЊЕ ЛС2013 34 Кратка вежба: Како може да се креира матрица од нули, кој има иста големина како некоја друга матрица ?