MATLAB
Dr Stevica Cvetković
KATEDRA ZA ELEKTRONIKU, Elektronski fakultet, Univerzitet u Nišu
Matlab
2
GNU Octave
3
Definisanje matrice
Definisanje matrice A:
>> A = [1, 1, 3; 4, 0, 6; 2, 5,-1]
A =
1 1 3
4 0 6
2 5 -1
4
>> a = [7, 2, 3; 4, 5, 6]; % Ovo je matrica.
5
Vektor kolona
Vektor-kolona se u MATLABU predstavljaju kao matrica sa jednom kolonom:
>> x = [1; 2; 4; 8] % ovo je vektor-kolona
x =
1
2
4
8
6
Dvotačka operator
>> x = [3:10] % Podrazumeva se korak 1.
x =
3 4 5 6 7 8 9 10
>> x = [3:2:10]
x =
3 5 7 9
>> x = 3:2:10 % Dozvoljeno je izostaviti zagrade! (uobičajeno)
x =
3 5 7 9
7
Pristup elementima po indeksu
>> a = [7 2 3; 4 5 6];
>> c = a(2,3)
c =
6
8
>> a(3,4)
??? Index exceeds matrix dimensions.
>> a(3,4)= 15
a =
7 2 3 0
4 5 6 0
0 0 0 15
9
Niz indeksa
>> x = [4 5 6 7 8];
>> podniz = x([2,3,4])
podniz =
5 6 7
10
>> x = [7 8 9 1; 4 5 6 3];
>> podmatrica = x(1, [2, 4]) % indeks može biti niz!
podmatrica =
8 1
11
Operator dvotačka
>> x = [3:2:11]
x =
3 5 7 9 11
12
Dvotačka kao indeks
>> x = [9 5 3 1 8 2];
>> y = x(2:5)
y =
5 3 1 8
>> y = x(2:end)
y =
5 3 1 8 2
>> y = x(:)
y =
9 5 3 1 8 2
13
>> a = [1 2 3; 4 5 6; 7 8 9]
a =
1 2 3
4 5 6
7 8 9
14
Podmatrica koju izdvajamo | MATLAB naredba |
Podmatrica koja obuhvata drugu i treću vrstu i od prve do treće kolone. | >> a(2:3, 1:3) ans = 4 5 6 7 8 9 |
Svi elementi druge kolone. (tj. elementi svih vrsta(:) i druge kolone(2))
| >> a(:, 2) ans = 2 5 8 |
Svi elemenati prve vrste. (tj. elementi prve vrste (1) i svih kolona(:)) | >> a(1, :) ans = 1 2 3 |
Snimanje i učitavanje matrice
>> save(‘matrica.dat’, A); % Snima matricu A u fajl.
>> A1 = load (‘matrica.dat’) % Iz fajla učitava matricu u A1.
15
Matematičke operacije nad matricama
16
Aritmetičke operacije
>> a = [1 2 3; 4 5 6];
>> b = [7 8 9; 3 2 1];
>> c = a + b
c =
8 10 12
7 7 7
>> d = a - b
d =
-6 -6 -6
1 3 5
>> c = a + 2
c =
3 4 5
6 7 8
>> c = a * 2
c =
2 4 6
8 10 12
>> c = a * b
Error using *
Inner matrix dimensions must agree.
17
Množenje matrica
>> A = [1 2 3; 4 5 6];
>> B = [1 3; 5 7; 8 9];
>> C = A * B
C =
35 44
77 101
18
Operacije element-po-element
>> a = [1 2 3; 4 5 6];
>> b = [7 8 9; 2 5 7];
>> c = a .* b
c =
7 16 27
8 25 42
>> c = a .^ 2
19
Relacije (<, >, ==, ~=, <=,…)
>> 12 >= 9
ans =
1
>> 11 ~= 11
ans =
0
20
Relacije (matrice)
Poređenje matrice i skalara:
>> a = [1 2 3; 4 5 6];
>> a <= 4
ans =
1 1 1
1 0 0
Poređenje dve matrice:
>> b = [3 2 1; 7 9 0]
b =
3 2 1
7 9 0
>> a >= b
ans =
0 1 1
0 0 1
21
Logički operatori
Nad skalarima (&&, ||):
x = 4;
y = 6;
z = (x ~= 4) || (x == 6)
z =
1
Nad matricama (&, |, ~):
>> a = [1 0; 1 1]
>> b = [0 1; 1 0]
>> a & b
ans =
0 0
1 0
22
Matlab Skripte
Npr: sabiranjeMatrica.m
clear all;�matA = [1 2 3; 4 5 6];�matB = [7 8 9; 3 2 1];�suma = matA + matB
23
Kontrola toka programa
24
if
if uslov� % naredbe koje se izvršavaju � % ako je uslov ispunjen � % ...
else
% naredbe koje se izvršavaju� % ako uslov nije ispunjen� % ...
end
Primer:
x = -15�if (x >= 0)
abs_x = x
else
abs_x = -x
end
25
if uslov1
% naredbe koje se izvršavaju ako je uslov1 ispunjen
elseif uslov2
% naredbe koje se izvršavaju ako:
% uslov1 nije ispunjen i uslov2 je ispunjen ...
elseif uslov3
% naredbe koje se izvršavaju ako:
% uslov1 nije ispunjen i uslov2 nije ispunjen i uslov3 je ispunjen
else
% naredbe koje se izvršavaju ako nijedan od uslova nije ispunjen
end
26
Programske petlje
for i = pocetniind : korak : krajnji_ind
%naredbe koje se izvršavaju unutar petlje (telo petlje)
end
Primer:
test = 0;
for i = 0 : 1 : 11
test = test + 2
end
27
Primer
Primer 1: Izračunati euklidsko (L2) rastojanje dva zadata niza.
clear all;
x = [7, 3, 4, 1, 8];
y = [6, 8, 9, 5, 7];
d = 0;
for i = 1 : 5
t = (x(i) - y(i)) ^ 2;
d = d + t;
end
d = sqrt(d);
% d = sqrt(sum(((x - y) .^ 2)));
28
Programske petlje - primer
Primer 2: Odrediti maksimalni element zadatog niza x koji sadrži deset elemenata.
clear all;
x = [3, 4, 2, 1, 4, 7, 3, 4, 1, 8];
maxEl = x(1);
for i = 2 : 10
if ( x(i) > maxEl )
maxEl = x(i);
end
end�
29
Matlab funkcijski potprogrami
30
Funkcije
function [izlazni_argumenti] = imefunkcije(ulazni_argumenti)
%Komentar koji se ispisuje u helpu
...
%telo funkcije
...
izlazni_argumenti = ...
31
Funkcije - primer
Primer definisanja f-je u fajlu ZbirProizvod.m:
�function [z, p] = ZbirProizvod(A, B)
%Primer jednostavne funkcije
z = A + B;
p = A * B;
Primer korišćenja (poziva) funkcije u Matlabu:�
>> a = [3 4; 5 6];
>> b = [2 5; 7 9];
>> [zbir1, proizvod1] = ZbirProizvod(a, b)�
zbir1 =
5 9
12 15��proizvod1 =
34 51
32
Ugrađene Matlab f-je
33
Funkcije za kreiranje matrica
34
Funkcija | Opis | Primer |
zeros(m) zeros(m, n) | Matrica čiji su svi elementi jednaki nuli. | >> a = zeros(2,3) a = 0 0 0 0 0 0 |
ones(m) ones(m, n) | Matrica čiji su svi elementi jednaki jedinici. | >> a = ones(2,3) a = 1 1 1 1 1 1 |
eye(m) eye(m, n) | Jedinična matrica (elementi glavne dijagonale su 1, a ostali elementi jednaki 0). | >> a = eye(2) a = 1 0 0 1 |
rand(m) rand(m, n) | Matrica slučajnih elemenata na segmentu [0, 1] po uniformnoj raspodeli. | >> a = rand(2,3) a = 0.8147 0.1270 0.6324 0.9058 0.9134 0.0975 |
randn(m) randn(m, n)
| Matrica slučajnih elemenata prema norm. raspodeli . | >> a = randn(2,3) a = -0.4326 0.1253 -1.1465 -1.6656 0.2877 1.1909 |
Matematičke operacije
35
Funkcija | Opis | Primer nad a=[1 2; -1 -2] |
abs(a) | Apsolutna vrednost | >> abs(a) ans = 1 2 1 2 |
sqrt(a) | Kvadratni koren | >> sqrt(a) ans = 1.0000 1.4142 0 + 1.0000i 0 + 1.4142i |
exp(a) | Eksponencijalna funkcija, tj. ea | >> exp(a) ans = 2.7183 7.3891 0.3679 0.1353 |
log(a) | Prirodni logaritam tj. ln(a) | >> log(a) ans = 0 0.6931 0 + 3.1416i 0.6931 + 3.1416i |
log10(a) | Logaritam sa osnovom 10. | >> log10(a) ans = 0 0.3010 0 + 1.3644i 0.3010 + 1.3644i |
sin(a) cos(a) | Trigonometrijske funkcije, pri čemu je ugao zadat u radijanima. | >> sin(a) ans = 0.8415 0.9093 -0.8415 -0.9093 |
Statističke operacije
36
Funkcija | Opis | Primer nad matricom a = [3 4; 1 7; 5 2] | Primer nad nizom b = [4 9 5] |
max(m) min(m) | Pronalazi maksimalni (minimalni) element. | >> max(a) ans =
| >> max(b) ans = 9 |
sum(m) | Suma elemenata | >> sum(a) ans =
| >> sum(b) ans = 18 |
mean(m) | Srednja vrednost | >> mean(a) ans =
| >> mean(b) ans = 6 |
sort(m) | Uređuje elemente u rastući poredak. | >> sort(a) ans = 1 2 3 4 5 7 | |
Pozivom ovih funkcija nad matricom, vrši se operacija nad svakom kolonom matrice!