Professional Documents
Culture Documents
UVOD U MATLAB - Diskretni I Kontinualni Signali
UVOD U MATLAB - Diskretni I Kontinualni Signali
UVOD U MATLAB
>> a=1
a =
1
>> whos
Name Size Bytes Class Attributes
a 1x1 8 double
2 Uvod u Matlab
>> whos
Name Size Bytes Class Attributes
a 1x1 8 double
b 1x34 68 char
ans = ans =
t 3
>> A(1,2)
ans =
3 4
>> A=[1 2;3 4]
>> A(:,1)
A =
1 2 ans =
3 4 1
3
Naglasimo da je prvi element neke matrice sa indeksima (1, 1), tj. da indeksi
počinju od jedan, a ne od 0 (kao kod nekih drugih programskih jezika).
Nema posebnog definisanja tipa promenljive; promenljive mogu
narednom dodelom da promene i tip i sadržaj, a matrice se automatski
proširuju:
>> A(3,4)=9
A =
1 2 0 0
3 4 0 0
0 0 0 9
1. Osnovne strukture podataka u Matlabu 3
>> whos A
>> A = 'string'
A =
string
>> whos A
c =
string = vektor karakter vrednosti i jednostavno se prosiruje
>> i
ans =
0 + 1.0000i
>> s=j*20
s =
0 +20.0000i
>> k=sqrt(-9)
k =
0 + 3.0000i
>> whos s k
0, n < −1
6, n = −1
Neka je zadat signal x (n ) = 12, n = 0
−5, n = 1
0, n > 1
>> n=-10:10
2. Grafički prikaz diskretnih i analognih signala 5
n =
Columns 1 through 11
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0
Columns 12 through 21
1 2 3 4 5 6 7 8 9 10
>> x=exp(0.1*n)
x =
Columns 1 through 7
0.3679 0.4066 0.4493 0.4966 0.5488 0.6065 0.6703
Columns 8 through 14
0.7408 0.8187 0.9048 1.0000 1.1052 1.2214 1.3499
Columns 15 through 21
1.4918 1.6487 1.8221 2.0138 2.2255 2.4596 2.7183
2.5
1.5
0.5
0
-10 -5 0 5 10
>> x=exp(0.1*n).*sin(n*pi/5)
x =
Columns 1 through 7
0.0000 0.2390 0.4273 0.4723 0.3226 -0.0000 -0.3940
Columns 8 through 14
-0.7046 -0.7787 -0.5319 0 0.6496 1.1616 1.2838
Columns 15 through 21
0.8769 0.0000 -1.0710 -1.9152 -2.1166 -1.4457 -0.0000
>> stem(n,x)
>> xlabel('n');
>> ylabel('x(n)')
>> title('Primer signala x(n)');
>> grid
Primer signala x(n)
1.5
0.5
0
x(n)
-0.5
-1
-1.5
-2
-2.5
-10 -5 0 5 10
n
>> t=-10:0.01:10;
>> x=exp(0.1*t).*sin(pi/5*t);
>> plot(t,x);
>> xlabel('t');
>> ylabel('x(t)')
>> title('Primer signala x(t)');
2. Grafički prikaz diskretnih i analognih signala 7
0.5
x(t)
-0.5
-1
-1.5
-2
-2.5
-10 -5 0 5 10
t
Matlab ima veoma dobro urađen help sistem (Help meni u Matlab
komandnom prozoru vodi u html sistem help-a). Međutim, i u komandnom
promptu, korišćenjem naredbe help moguće je dobiti informacije o svim
grupama Matlab-ovih funkcija i struktura. Ako je poznato ime grupe
funkcija, npr. matlab\elfun – elementarne matematike funkcije, ili ime
funkcije za koje nam treba pomoć, oni se mogu navesti i dobiti u
komandnom prozoru tekstualna pomoć vezana za datu grupu, odnosno
funkciju. Npr. ako želimo da prethodnu signal iscrtamo u crvenoj boji,
potrebno nam je objašnjenje za način zadavanja boja i tipa linije u naradbi
plot, pa kucamo help plot i dobijamo opis načina korišćenja i parametre
te naredbe. Naredba plot(t,x,’r’) će ostvariti željenu promenu boje.
Takođe, može se u helpu naredbe plot videti i način korišćenja kada se želi
iscrtati više signala na istom grafiku. Tada se koristi proširena forma
naredbe plot gde se sukcesivno navode vektori x i y argumenata za sve
signale koji se crtaju, sa opcionim navođenjem stringa formata za boje i tip
linija pojedinačnih signala. Npr. ako se, pored signala x(t) želi prikazati i
signal y(t)=exp(0.1t)cos(tπ/5), sledeći Matlab kod će dati željeni dijagram,
predstavljen na slici 7.
t=-10:0.01:10;
x=exp(0.1*t).*sin(pi/5*t);
y=exp(0.1*t).*cos(pi/5*t);
plot(t,x,’b’,t,y,’g’);
8 Uvod u Matlab
-1
-2
-3
-10 -5 0 5 10
>> primer1
↵
Unesite broj indeksa:326↵
↵
Unesite godinu indeksa:2010↵
Uneti parametri: b=326, g=2010
Zbir=2336
10 Uvod u Matlab
4. MATLAB FUNKCIJE
Službena reč end označava kraj funkcije, a funkcija se može i ranije završiti
primenom službene reči return. U većini slučajeva, jedna datoteka sadrži
samo jednu funkciju, pa se tada završetak izvršavanja funkcije ostvaruje i
dostizanjem fizičkog kraja datoteke.
U telu funkcije vidljive su sve promenljive definisane u workspace-u
Matlaba, dok su promenljive koje se kreiraju u funkciji vidljive samo toj
funkciji u toku njenog izvršenja.
Formalnim izlaznim argumentima funkcije out_arg_1, out_arg_2,...
dodeljuju se vrednosti u telu funkcije, na osnovu formalnih ulaznih
argumenata in_arg_1, in_arg_2,..., varijabli kreiranih u samoj funkciji,
varijabli iz Matlabovog workspace-a, kao i eventualnim pozivima drugih
funkcija. Treba napomenuti da i ulazni i izlazni argumenti mogu da budu
matrični.
Poziv i korišćenje izlaznih argumenata funkcije ilustrovaćemo na primeru
pozivanja Matlab-ove funkcije sort, za sortiranje elemanata u matricama.
Prvo kreiramo vektor nesortiranih vrednost, npr:
> niz = [pi -1 2 0.3]
Iako funkcija sort ima veći broj ulaznih i izlaznih argumenata (videti help
sort), koristimo najjednostavniju formu poziva, sa samo jednim ulaznim
argumentom – nizom koji treba sortirati:
>> sort(niz)
ans =
-1.0000 0.3000 2.0000 3.1416
sortirani_niz =
-1.0000 0.3000 2.0000 3.1416
sortirani_niz =
-1.0000 0.3000 2.0000 3.1416
ind =
2 4 3 1
sortirani_niz =
3.1416 2.0000 0.3000 -1.0000
ind =
1 3 4 2
rezultat =
0
>> rezultat2=(rezultat+2)*cos(pi/2)
>> rezultat2=(rezultat+2)*cos(pi/4)
rezultat2 =
1.4142
rezultat =
1 0 0 1 0
Standardni logički operatori su: & (i), | (ili), ~ (negacija). Imajući u vidu da
logički operatori, takođe, rade sa matricama, nastavak prethodnog primera
bi mogao biti:
>> rezultat2 = (vektor >= 3)|(vektor <0)
rezultat2 =
1 0 0 1 1
6. Kontrolne strukture Matlaba 13
a =
1
3
a =
2
4
while izraz
blok komandi
end
Izraz može biti double ili logička promenljiva, kao i rezultat složenijih
numeričkih, relacionih i logičkih operacija. Najčešće je dovoljno da logički
izraz bude skalaran, kada se while petlja izvršava dok je logički izraz tačan,
odnosno numerički izraz različit od nule. Npr:
q = pi
while q > 0.1
q = q/2
end
U opštem slučaju, ukoliko je izraz matrica, while petlja se izvršava dok svi
elementi numeričke matrice imaju realni deo različit od nule, odnosno dok
su svi elementi logičke matrice tačni.
U okviru bloka komandi unutar while strukture mogu se naći i komande
break i continue, sa istim efektom kao i kod for strukture.
if izraz1
blok komandi 1
elseif izraz2
blok komandi 2
elseif izraz3
blok komandi 3
.
.
else
blok komandi else
end
6. Kontrolne strukture Matlaba 15
Izvršava se blok komandi iza case dela, za koji je tačno da izraz ima
navedenu vrednost (kao vrednost1) ili bilo koju, od navedenih više
vrednosti (kao {vrednost1, vrednost2}). Ukoliko izraz nije jednak ni
jednoj predviđenoj case vrednosti, izvršava se blok komandi otherwise.
Primetimo da, za razliku od nekih drugih programskih jezika, ne postoje
break komande između case delova. Takođe switch struktura je pomalo
redundantna, s obzirom na kompletnost postojeće if strukture.