You are on page 1of 11

Vebe 3 - Osnove teorije informacija i kodovanja

Uvod - Matlab
Deklarisanje vektora
Generisanje vektora x, kao jedan red:
x = [1 3 5 7 9 11]

Bri nain za generisanje vektora x iste veliine:


x = 1:2:11
x =
1

11

Transponovanje vektora x u jednu kolonu:


y = x'
y =
1
3
5
7
9
11

Primer 1:
Generisati vector Z kao red u rasponu vrednosti od 5 do 30 sa korakom 5.
Z = 5:5:30
z=

5 10 15 20 25 30

Vektor Z je generisan i nije prikazan u command window. Moemo saznati


vrednost tredeg elementa ukoliko je potrebno tako to demo uneti naredbu z(3).
z(3)
ans = 15

Na ovaj naun dobili smo novu promenjivu ANS koja je deklarisana automatski.
Radno okruenje Matlab-a
Naredba za pregled promenjivih koje su trenutno deklarisane:
>> who
Your variables are:
ans x y z

Naredba za slian pregled sa vise detalja o matricama i njihovoj veliini.


>> whos
Name

Size

Bytes

Class

ans

1x1

double

1x6

48

double

6x1

48

double

1x6

48

double

Attributes

Ako elimo da saznamo veliinu odreene matrice unosimo naredbu:


>> [m,n]=size(x)
m= 1
n = 6

ili
>> size(x)
ans =
1

Ako elimo trajno da uvamo vrednosti svih promenjivih iz radnog okruenja


unosimo naredbu save:
>> save nazivFajla

ili ako elimo samo uvati vrednosti samo nekih promenjivih:


>> save nazivFajla x

Ako elimo izbrisati sve promenive koristidemo naredbu:


>> clear all

Ako elimo koristiti vrednosti i promenjive koje smo sauvali u fajl, koristimo
naredbu load:
>> load nazivFajla

Unoenje matrica
Primer generisanja matrice A:
>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
A=
16

2 13

5 10 11
9

7 12

4 15 14

Izraunavanje sume po kolonama:


>> sum(A)
ans =
34 34 34 34

Transpanovanje matrice A:
>> A'
ans =

16

3 10

6 15

2 11

7 14

13

8 12

Prikaz i izraunavanje sume dijagonalnih elemenata:


>> diag(A)
ans =
16
10
7
1
>> sum(diag(A))
ans =
34

Prikaz vrednosti elemenata sa zadate pozicije:


>> A(2,4)
ans =
8

Generisanje matrica:
>> Z = zeros(2,3)
Z= 0

>> F = 5*ones(2,3)
F= 5

>>N = 10*rand(1,8)

N = 6.5574 0.3571 8.4913 9.3399 6.7874 7.5774 7.4313 3.9223

M- fajlovi
Kreiramo fajl Matrica.m. Unosimo slededi sadraj u fajl i sauvamo u fajlu:
A = [16.0 3.0 2.0 13.0
5.0 10.0 11.0 8.0
9.0 6.0 7.0 12.0
4.0 15.0 14.0 1.0];

Ukoliko unesemo naredbu Matrica dobidemo definisanu matricu, promenjivu A.


Ukoliko unesemo:
>> A
A=
16

2 13

5 10 11
9

7 12

4 15 14

Konkatenacija matrica
Konkatenacija je proces vezivanja ili spajanja dve manje matrice u jednu vedu.
Primer za matricu A:
>> B = [A A+32;A+48 A+16]
B=
16

2 13 48 35 34 45

5 10 11
9

8 37 42 43 40

7 12 41 38 39 44

4 15 14

1 36 47 46 33

64 51 50 61 32 19 18 29

53 58 59 56 21 26 27 24
57 54 55 60 25 22 23 28
52 63 62 49 20 31 30 17

Primena logaritamske funkcije nad nizom vrednosti


>> X = (1:2:16)';
>> X
X=
1
3
5
7
9
11
13
15
>> Log = log2(X)
Log =
0
1.5850
2.3219
2.8074
3.1699
3.4594
3.7004
3.9069

Uvoenje podataka iz Excel datoteke


Napraviti excel datoteku podaci.xlsx. U datoteci definisati proizvoljnu matricu
4 x 4. Promeniti naziv Sheet1 u naziv Matrica. Unoenjem naredbe
xlsfinfo(nazivDatoteke) dobijamo detaljan uvid u excel datoteku.
>> [type, sheets]=xlsfinfo('podaci.xlsx');
>> type
type = Microsoft Excel Spreadsheet
>> sheets
sheets = 'Matrica' 'Sheet2' 'Sheet3'

Ako elimo da uvezemo podatke sa lista Matrica, unosimo naredbu


xlsread(nazivDatoteke, nazivLista).
>> A = xlsread('podaci.xlsx','matrica');
>> A
A=
1

Zatim uradimo proces konkatenacije nad matricom A i upisujemo podatke u excel


datoteku.
>> B = [A A+12;A+5 A+8];
>> B
B=
1

4 13 14 15 16

5 14 15 16 17

6 15 16 17 18

7 16 17 18 19

9 10 10 11 12 13

9 10 11 11 12 13 14

9 10 11 12

9 10 11 12 12 13 14 15

>> xlswrite('Podaci.xlsx',B,'MatricaCon');

Pravljenje renika Hafmanovih kodova


Napraviti datoteku sa slededim sadrajem:

Uneti sledede naredbe za uvoz podataka:


>> X = xlsread('Izvor.xlsx','Poruke');
>> P = xlsread('Izvor.xlsx','Verovatnoce');

>> X
X=

>> P
P = 0.5000 0.3500 0.1200 0.0300

Uneti sledede naredbe za pravljenje Hafmanovog renika:


>> R = huffmandict(X,P);
>> R
R=
[1] [

0]

[2] [1x2 double]


[3] [1x3 double]
[4] [1x3 double]

Primer: Hafmanovo kodovanje


Generisanje 50 istih blokova poruke:
>> poruke = repmat([3 3 1 3 3 3 3 3 2 3],1,50);

Generisanje simbola u poruci:


>>simboli = [1 2 3];

Odre]ivanje pojedinane verovatnode simbola:


>>verovatnoce = [0.1 0.1 0.8];

Generisanje renika Hafmanov kod


>>recnik = huffmandict(simboli,verovatnoce);

Generisanje kodne sekvence preko Hafmanovog kodera:


>>kodnaSekvenca = huffmanenco(poruke,recnik);

Generisanje dekodovane sekvence preko Hafmanovog dekodera:


>>dekodovanaSekvenca = huffmandeco(kodnaSekvenca,recnik);

You might also like