Professional Documents
Culture Documents
FAKULTET ELEKTROTEHNIKE
Laboratorijske vježbe
Teorija informacija i kodovanje
Amera Sinanović
Rješenje
1 # -* - coding : utf -8 -* -
2 """
3 Generisati nekoliko slucajnih realnih brojeva iz intervala (0 ,1)
4 prema uniformnoj raspodjeli .
5 """
6 import numpy as np
7 from numpy import random
8 import matplotlib . pyplot as plt
9 from numpy import cos , pi
10
11 N =100;
12
13 x = random . rand ( N ) # unifromna raspodjela
14 n = np . arange ( N )
15
16
17 plt . stem (n ,x , ’r ’)
18 plt . xlabel ( " n " )
19 plt . ylabel ( " x [ n ] " )
20 plt . grid ()
21
22
23 x =10* random . rand ( N ) -5
24
25 plt . figure (2)
26 plt . stem (n ,x , ’b ’)
27 plt . xlabel ( " n " )
28 plt . ylabel ( " x [ n ] " )
29 plt . grid ()
30
31 x = np . round ( random . rand ( N ) )
4
32
33 plt . figure (3)
34 plt . stem (n ,x , ’g ’)
35 plt . xlabel ( " n " )
36 plt . ylabel ( " x [ n ] " )
37 plt . grid ()
38
39 x = random . randn ( N ) # normalna raspodjeal sa sr . 0 i st . dev . 1
40 plt . figure (4)
41 plt . stem (n ,x , ’y ’)
42 plt . xlabel ( " n " )
43 plt . ylabel ( " x [ n ] " )
44 plt . grid ()
45
46
47 x = random . randn ( N ) # normalna raspodjeal sa sr . 0 i st . dev . 1
48 plt . figure (4)
49 plt . stem (n ,x , ’y ’)
50 plt . xlabel ( " n " )
51 plt . ylabel ( " x [ n ] " )
52 plt . grid ()
53
54 x =1+ 2* random . randn ( N ) # normalna raspodjeal sa sr . 1 i st . dev . 2
55 plt . figure (5)
56 plt . stem (n ,x , ’k ’)
57 plt . xlabel ( " n " )
58 plt . ylabel ( " x [ n ] " )
59 plt . grid ()
60
61
62 x =1+ 5* random . randn ( N ) # normalna raspodjeal sa sr . 1 i st . dev . 5
63 plt . figure (5)
64 plt . stem (n ,x , ’m ’)
65 plt . xlabel ( " n " )
66 plt . ylabel ( " x [ n ] " )
67 plt . grid ()
a) p = 0.1,
b) p = 0.5,
c) p = 0.5 a zatim dobijenim vrijednostima dodati AWGNsumcija je srednja vrijednost nula i varijansa
0.1.
e) Simboli nakon dodavanja AWGN suma u dijelu zadatka c) predstavljaju realnu situaciju u komu-
nikacijskom sistemu. Objasniti.
1 # -* - coding : utf -8 -* -
2 import numpy as np
3 from numpy import random
4 import matplotlib . pyplot as plt
5
6 N =100;
7 n = np . arange ( N )
8 x = random . rand ( N ) # unifromna raspodjela
9
10 # p - vjerovatnoca simbola 1
11
12 p =0.1
13
14 x1 = np . zeros ( N )
15
16 i =0;
17 while i < N :
18 if x [ i ] < p :
19 x1 [ i ]=1;
20 else :
21 x1 [ i ]=0;
22 i = i +1;
23
24 plt . stem (n , x1 , ’r ’)
25 plt . xlabel ( " n " )
26 plt . ylabel ( " x1 [ n ] " )
27 plt . grid ()
28
29 # p - vjerovatnoca simbola 1
30
31 p =0.5
32
33 x1 = np . zeros ( N )
34
35 i =0;
36 while i < N :
37 if x [ i ] < p :
38 x1 [ i ]=1;
39 else :
40 x1 [ i ]=0;
41 i = i +1;
42
43 plt . figure (2)
44 plt . stem (n , x1 , ’g ’)
45 plt . xlabel ( " n " )
46 plt . ylabel ( " x1 [ n ] " )
47 plt . grid ()
48
49
6
50 # p - vjerovatnoca simbola 1
51
52 N =50
53 p =0.5
54 n = np . arange ( N )
55 x1 = np . zeros ( N )
56 # sum
57 x2 = 0.1* random . rand ( N )
58
59 i =0;
60 while i < N :
61 if x [ i ] < p :
62 x1 [ i ]=1;
63 else :
64 x1 [ i ]=0;
65 i = i +1;
66
67 x = x1 + x2
68 plt . figure (3)
69 plt . stem (n ,x , ’k ’)
70 plt . xlabel ( " n " )
71 plt . ylabel ( " x [ n ] " )
72 plt . grid ()
73
74
75 plt . figure (4)
76 plt . stem (n , x2 , ’y ’)
77 plt . xlabel ( " n " )
78 plt . ylabel ( " x2 [ n ] " )
79 plt . grid ()
Laboratorijske vježbe
Teorija informacija i kodovanje
Amera Sinanović
Zadatak 2.1
Diskretni izvor bez memorije opisan je alfabet od X = x1, x2, x3, x4 i vjerovatnoćama p(X) =
0.4, 0.3, 0.2, 0.1.
c) Ako bi smo u dijelu zadatka b) izmjenili poredak simbola da li ce se promjeniti kolicina informacije?
Demonstrirati i objasniti.
Rješenje
1 # -* - coding : utf -8 -* -
2 """
3 Diskretni izvor bez memorije opisan je alfabet od X = { x1 , x2 , x3 , x4 }
4 i v j e r o v a t n o a m a p ( X ) ={0.4 , 0.3 , 0.2 , 0.1}.
5 """
6
7 import numpy as np
8 from numpy import random , sum , log2
9 import matplotlib . pyplot as plt
10
11 p = np . array ([0.4 , 0.3 , 0.2 , 0.1])
12 # entropija
13 H = - sum ( p * log2 ( p ) )
14
15 # k o l i i n a informacija s a d r a n u u poruci x1x2x1x3
16 p1 = p [0] * p [1]* p [0] * p [2]
17 I1 = - log2 ( p1 )
18
19 # k o l i i n a informacija s a d r a n u u poruci x4x3x3x2
20 p2 = p [3] * p [2]* p [2] * p [1]
21 I2 = - log2 ( p2 )
22
23 # makismalna entropija
24
25 p = np . linspace (0 , 1 ,100)
26 H = - p * log2 ( p ) - (1 - p ) * log2 (1 - p ) ;
27
28
4
29 plt . plot (p ,H , ’b ’)
30 plt . xlabel ( " p ( x ) " )
31 plt . ylabel ( " H ( x ) " )
32 plt . title ( " Zavisnost enptropije od vjerovatnoce " )
33 plt . grid ()
Zadatak 2.2
Odrediti entropiju diskretno izvora bez memorije ako izvrsimo drugo prosirenje izvora. Izvor je opisan
sa alfabetom:
Rješenje
1 # -* - coding : utf -8 -* -
2 import numpy as np
3 from numpy import random , sum , log2
4 import matplotlib . pyplot as plt
5
6 # p ( X ) = {0.8 , 0.2}
7 p2 = np . array ([0.8 ,0.2])
8 # entropija
9 H2 = - sum ( p2 * log2 ( p2 ) )
10
11
12 # drugo prosirenje izvora sa dva simbola
13
14 p22 = np . array ([0.8*0.8 , 0.2*0.8 , 0.2*0.8 , 0.2*0.2])
15 # entropija
16 H22 = - sum ( p22 * log2 ( p22 ) )
17
18 # p ( X ) = {0.5 , 0.3 , 0.2}.
19 p3 = np . array ([0.5 ,0.3 , 0.2])
20 # entropija
21 H3 = - sum ( p3 * log2 ( p3 ) )
22
23
24 # drugo prosirenje izvora sa dva simbola
25
26 p32 = np . array ([ p3 [0] * p3 , p3 [1] * p3 , p3 [2] * p3 ])
27 # entropija
28 H32 = - sum ( p32 * log2 ( p32 ) )
29
30
31 # p ( X ) = {0.4 , 0.3 , 0.2 , 0.1}.
32 p4 = np . array ([0.4 ,0.3 , 0.2 , 0.1])
33 # entropija
34 H4 = - sum ( p4 * log2 ( p4 ) )
35
36
37 # drugo prosirenje izvora sa dva simbola
38
39 p42 = np . array ([ p4 [0] * p4 , p4 [1] * p4 , p4 [2] * p4 , p4 [3] * p4 ])
40 # entropija
41 H42 = - sum ( p42 * log2 ( p42 ) )
Rješenje