Professional Documents
Culture Documents
Scilab Code For Digital Communication, by Simon Haykin
Scilab Code For Digital Communication, by Simon Haykin
Digital Communication,
by Simon Haykin 1
Created by
Prof. R. Senthilkumar
Institute of Road and Transport Technology
rsenthil signalprocess@in.com
Cross-Checked by
Prof. Saravanan Vijayakumaran, IIT Bombay
sarva@ee.iitb.ac.in
23 August 2010
1 Funded
Book Details
Authors: Simon Haykins
Title: Digital Communication
Publisher: Willey India
Edition: Wiley India Edition
Year: Reprint 2010
Place: Delhi
ISBN: 9788126508242
Scilab numbering policy used in this document and the relation to the
above book.
Prb Problem (Unsolved problem)
Exa Example (Solved example)
Tab Table
ARC Additionally Required Code (Scilab Code that is not part of the above
book but required to solve a particular Example)
AE Appendix to Example(Scilab Code that is an Appednix to a particular
Example of the above book)
CF Code for Figure(Scilab code that is used for plotting the respective figure
of the above book )
For example, Prb 4.56 means Problem 4.56 of the above book. Exa 3.51
means solved example 3.51 of this book. Sec 2.3 means a scilab code whose
theory is explained in Section 2.3 of the book.
Contents
List of Scilab Codes
1 Introduction
14
4 Sampling Process
27
31
39
59
8 Error-Control Coding
87
9 Spread-Spectrum Modulation
94
2
5
5
7
8
9
10
10
14
16
19
20
22
24
27
28
31
31
32
34
36
36
39
40
40
42
44
Exa 6.3
CF 6.4
CF 6.6b
CF 6.7b
CF 6.9
CF 6.15
47
48
49
51
53
55
59
61
63
68
70
72
74
74
76
77
78
80
82
87
87
88
89
90
90
91
92
93
94
95
97
100
100
103
106
ARC
ARC
ARC
ARC
ARC
ARC
ARC
ARC
ARC
3
4
5
5
6
7
8
9
10
Convolutional Coding
Hamming Distance . .
Hamming Encode . .
invmulaw . . . . . . .
PCM Encoding . . . .
PCM Transmission . .
sinc new . . . . . . . .
uniform pcm . . . . .
xor . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
107
108
108
110
110
111
111
112
112
List of Figures
1.1
1.2
Figure1.2a . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Figure1.2b . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
4
2.1
2.2
2.3
Example2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . .
Example2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . .
Example2.7 . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
11
13
3.1
3.2
3.3
3.4
3.5
3.6
Example3.1a .
Example3.1b .
Example3.2 .
Example3.3 .
Example3.4 .
Figure3.29 . .
.
.
.
.
.
.
16
17
19
21
23
26
4.1
4.2
Example4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . .
Example4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
30
5.1
5.2
5.3
Example5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . .
Figure5.13a . . . . . . . . . . . . . . . . . . . . . . . . . . .
Figure5.13b . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
37
38
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
Figure6.1a
Figure6.1b
Figure6.1c
Figure6.4
Figure6.6
Figure6.7
Figure6.9
Figure6.15
41
43
45
50
52
54
56
58
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9
7.10
7.11
7.12
7.13
7.14
Example7.1
Figure7.1a .
Figure7.1b .
Figure7.1c .
Example7.2
Figure7.2 .
Figure 7.4 .
Figure7.6 .
Figure7.12 .
Figure7.29 .
Figure7.30 .
Figure7.31 .
Figure7.41a
Figure7.41b
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
61
64
65
66
69
70
73
75
77
79
81
83
85
86
9.1
9.2
9.3
9.4
9.5
Example9.2a .
Example9.2b .
Figure9.6a . .
Figure9.6b . .
Figure10.12 .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
98
99
103
104
105
Chapter 1
Introduction
Scilab code CF 1.2 Digital Representation of Analog signal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// C a p t i o n : D i g i t a l R e p r e s e n t a t i o n o f Analog s i g n a l
// F i g u r e 1 . 2 : Analog t o D i g i t a l C o n v e r s i o n
clear ;
close ;
clc ;
t = -1:0.01:1;
x = 2* sin (( %pi /2) * t ) ;
dig_data = [0 ,1 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,0 ,1 ,0 ,1]
//
figure
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
a . data_bounds =[ -2 , -3;2 ,3]
plot (t , x )
plot2d3 ( gnn ,0.5 , sqrt (2) , -9)
plot2d3 ( gnn , -0.5 , - sqrt (2) , -9)
plot2d3 ( gnn ,1 ,2 , -9)
plot2d3 ( gnn , -1 , -2 , -9)
xlabel (
Time )
21 ylabel (
2
22
23
24
25
26
27
28
Voltage )
title ( Analog Waveform )
//
figure
a = gca () ;
a . data_bounds = [0 ,0;21 ,5];
plot2d2 ([1: length ( dig_data ) ] , dig_data ,5)
title ( D i g i t a l R e p r e s e n t a t i o n )
Chapter 2
Fundamental Limit on
Performance
Scilab code Exa 2.1 Entropy of Binary Memoryless source
1 // C a p t i o n : Ent ropy o f B i n a r y M e m o r y l e s s s o u r c e
2 // Example 2 . 1 : Entropy o f B i n a r y M e m o r y l e s s S o u r c e
3 // p a g e 18
4 clear ;
5 close ;
6 clc ;
7 Po = 0:0.01:1;
8 H_Po = zeros (1 , length ( Po ) ) ;
9 for i = 2: length ( Po ) -1
10
H_Po ( i ) = - Po ( i ) * log2 ( Po ( i ) ) -(1 - Po ( i ) ) * log2 (1 - Po ( i
));
11 end
12 // p l o t
13 plot2d ( Po , H_Po )
14 xlabel ( Symbol P r o b a b i l i t y , Po )
15 ylabel ( H( Po ) )
16 title ( Entropy f u n c t i o n H( Po ) )
17 plot2d3 ( gnn ,0.5 ,1)
Scilab code Exa 2.2 Second order Extension of Discrete Memoryless Source
5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// c a p t i o n : S e c o n d o r d e r E x t e n s i o n o f D i s c r e t e
Memoryless Source
// Example 2 . 2 : Entropy o f D i s c r e t e M e m o r y l e s s s o u r c e
// p a g e 19
clear ;
clc ;
P0 = 1/4; // p r o b a b i l i t y o f s o u r c e a l p h a b e t S0
P1 = 1/4; // p r o b a b i l i t y o f s o u r c e a l p h a b e t S1
P2 = 1/2; // p r o b a b i l i t y o f s o u r c e a l p h a b e t S2
H_Ruo = P0 * log2 (1/ P0 ) + P1 * log2 (1/ P1 ) + P2 * log2 (1/ P2 ) ;
disp ( Entropy o f D i s c r e t e M e m o r y l e s s S o u r c e )
disp ( b i t s , H_Ruo )
// S e c o n d o r d e r E x t e n s i o n o f d i s c r e t e M e m o r y l e s s
source
P_sigma = [ P0 * P0 , P0 * P1 , P0 * P2 , P1 * P0 , P1 * P1 , P1 * P2 , P2 * P0
, P2 * P1 , P2 * P2 ];
disp ( T a b l e 2 . 1 A l p h a b e t P a r t i c u l a r s o f Secondo r d e r
Extension o f a D i s c r e t e Memoryless Source )
disp (
)
disp ( S e q u e n c e o f Symbols o f r u o 2 : )
disp ( S0 S0
S0 S1
S0 S2
S1 S0
S1
S1
S1 S2
S2 S0
S2 S1 S2 S2 )
disp ( P_sigma , P r o b a b i l i t y p ( s i g m a ) , i = 0 , 1 . . . . . 8 )
disp (
)
disp (
)
H_Ruo_Square =0;
for i = 1: length ( P_sigma )
H_Ruo_Square = H_Ruo_Square + P_sigma ( i ) * log2 (1/
P_sigma ( i ) ) ;
end
disp ( b i t s , H_Ruo_Square , H( R u o S q u a r e )= )
disp ( H( R u o S q u a r e ) = 2H( Ruo ) )
22
23
// C a p t i o n : Entropy , A v e r a g e l e n g t h , V a r i a n c e o f
Huffman E n c o d i n g
// Example 2 . 3 : Huffman E n c o d i n g : C a l c u l a t i o n o f
// ( a ) A v e r a g e code word l e n g t h L
// ( b ) E ntropy H
clear ;
clc ;
P0 = 0.4; // p r o b a b i l i t y o f c o d e w o r d 0 0
L0 = 2;
// l e n g t h o f c o d e w o r d S0
P1 = 0.2; // p r o b a b i l i t y o f c o d e w o r d 1 0
L1 = 2;
// l e n g t h o f c o d e w o r d S1
P2 = 0.2; // p r o b i l i t y o f c o d e w o r d 1 1
L2 = 2;
// l e n g t h o f c o d e w o r d S2
P3 = 0.1; // p r o b i l i t y o f c o d e w o r d 0 1 0
L3 = 3;
// l e n g t h o f c o d e w o r d S3
P4 =0.1; // p r o b i l i t y o f c o d e w o r d 0 1 1
L4 = 3;
// l e n g t h o f c o d e w o r d S4
L = P0 * L0 + P1 * L1 + P2 * L2 + P3 * L3 + P4 * L4 ;
H_Ruo = P0 * log2 (1/ P0 ) + P1 * log2 (1/ P1 ) + P2 * log2 (1/ P2 ) + P3
* log2 (1/ P3 ) + P4 * log2 (1/ P4 ) ;
disp ( b i t s ,L , A v e r a g e code word Length L )
disp ( b i t s , H_Ruo , Entropy o f Huffman c o d i n g r e s u l t
H)
disp ( p e r c e n t ,((L - H_Ruo ) / H_Ruo ) *100 , A v e r a g e code
word l e n g t h L e x c e e d s t h e e n t r o p y H( Ruo ) by o n l y
)
sigma_1 = P0 *( L0 - L ) ^2+ P1 *( L1 - L ) ^2+ P2 *( L2 - L ) ^2+ P3 *( L3
- L ) ^2+ P4 *( L4 - L ) ^2;
disp ( sigma_1 , V a r i n a c e o f Huffman c o d e )
Scilab code Exa 2.4 Entropy, Average length, Variance of Huffman Encoding
// C a p t i o n : Entropy , A v e r a g e l e n g t h , V a r i a n c e o f
Huffman E n c o d i n g
8
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Example2 . 4 : I l l u s t r a t i n g n o n u n i q u e s s o f t h e
Huffman E n c o d i n g
// C a l c u l a t i o n o f ( a ) A v e r a g e code word l e n g t h L ( b
) Entr opy H
clear ;
clc ;
P0 = 0.4; // p r o b a b i l i t y o f c o d e w o r d 1
L0 = 1;
// l e n g t h o f c o d e w o r d S0
P1 = 0.2; // p r o b a b i l i t y o f c o d e w o r d 0 1
L1 = 2;
// l e n g t h o f c o d e w o r d S1
P2 = 0.2; // p r o b i l i t y o f c o d e w o r d 0 0 0
L2 = 3;
// l e n g t h o f c o d e w o r d S2
P3 = 0.1; // p r o b i l i t y o f c o d e w o r d 0 0 1 0
L3 = 4;
// l e n g t h o f c o d e w o r d S3
P4 =0.1; // p r o b i l i t y o f c o d e w o r d 0 0 1 1
L4 = 4;
// l e n g t h o f c o d e w o r d S4
L = P0 * L0 + P1 * L1 + P2 * L2 + P3 * L3 + P4 * L4 ;
H_Ruo = P0 * log2 (1/ P0 ) + P1 * log2 (1/ P1 ) + P2 * log2 (1/ P2 ) + P3
* log2 (1/ P3 ) + P4 * log2 (1/ P4 ) ;
disp ( b i t s ,L , A v e r a g e code word Length L )
disp ( b i t s , H_Ruo , Entropy o f Huffman c o d i n g r e s u l t
H)
sigma_2 = P0 *( L0 - L ) ^2+ P1 *( L1 - L ) ^2+ P2 *( L2 - L ) ^2+ P3 *( L3
- L ) ^2+ P4 *( L4 - L ) ^2;
disp ( sigma_2 , V a r i n a c e o f Huffman c o d e )
Scilab code Exa 2.5 Binary Symmetric Channel
1 // C a p t i o n : B i n a r y Symmetric Channel
2 // Example2 . 5 : B i n a r y Symmetric Channel
3 clear ;
4 clc ;
5 close ;
6 p = 0.4; // p r o b a b i l i t y o f c o r r e c t r e c e p t i o n
7 pe = 1 - p ; // p r o b i l i t y o f e r r o r r e c e p t i o n ( i . e )
transition probility
8 disp (p , p r o b i l i t y o f 0 r e c e i v i n g i f a 0 i s s e n t =
p r o b i l i t y o f 1 r e c e i v i n g i f a 1 i s s e n t= )
9
9
10
disp ( T r a n s i t i o n p r o b i l i t y )
disp ( pe , p r o b i l i t y o f 0 r e c e i v i n g i f a 1 i s s e n t =
p r o b i l i t y o f 1 r e c e i v i n g i f a 0 i s s e n t= )
Scilab code Exa 2.6 Channel Capacity of a Binary Symmetric Channel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// C a p t i o n : Channel C a p a c i t y o f a B i n a r y Symmetric
Channel
// Example2 . 6 : Channel C a p a c i t y o f B i n a r y Symmetri
Channel
clear ;
close ;
clc ;
p = 0:0.01:0.5;
for i =1: length ( p )
if ( i ~=1)
C ( i ) = 1+ p ( i ) * log2 ( p ( i ) ) +(1 - p ( i ) ) * log2 ((1 - p ( i ) ) )
;
elseif ( i ==1)
C ( i ) =1;
elseif ( i == length ( p ) )
C ( i ) =0;
end
end
plot2d (p ,C ,5)
xlabel ( T r a n s i t i o n P r o b i l i t y , p )
ylabel ( Channel C a p a c i t y , C )
title ( F i g u r e 2 . 1 0 V a r i a t i o n o f c h a n n e l c a p a c i t y o f
a binary symmetric channel with t r a n s i t i o n
probility p )
Scilab code Exa 2.7 Significance of the Channel Coding theorem
// C a p t i o n : S i g n i f i c a n c e o f t h e Channel Coding t h e o r e m
// Example2 . 7 : S i g n i f i c a n c e o f t h e c h a n n e l c o d i n g
theorem
3 // A v e r a g e P r o b i l i t y o f E r r o r o f R e p e t i t i o n Code
1
2
10
11
4 clear ;
5 clc ;
6 close ;
7 p =10^ -2;
8 pe_1 = p ; // A v e r a g e P r o b i l i t y
o f e r r o r f o r code r a t e
r = 1
9 pe_3 = 3* p ^2*(1 - p ) + p ^3; // p r o b i l i t y o f e r r o r f o r c o d e
r a t e r =1/3
10 pe_5 = 10* p ^3*(1 - p ) ^2+5* p ^4*(1 - p ) + p ^5; // e r r o r f o r
c o d e r a t e r =1/5
11 pe_7 = ((7*6*5) /(1*2*3) ) * p ^4*(1 - p ) ^3+(42/2) * p ^5*(1 - p
) ^2+7* p ^6*(1 - p ) + p ^7; // e r r o r f o r c o d e r a t e r =1/7
12 r = [1 ,1/3 ,1/5 ,1/7];
13 pe = [ pe_1 , pe_3 , pe_5 , pe_7 ];
14 a = gca () ;
15 a . data_bounds =[0 ,0;1 ,0.01];
16 plot2d (r , pe ,5)
17 xlabel ( Code r a t e , r )
18 ylabel ( A v e r a g e P r o b a b i l i t y o f e r r o r , Pe )
19 title ( F i g u r e 2 . 1 2 I l l u s t r a t i n g s i g n i f i c a n c e o f t h e
channel coding theorem )
20 legend ( R e p e t i t i o n c o d e s )
21 xgrid (1)
22 disp ( T a b l e 2 . 3 A v e r a g e P r o b i l i t y o f E r r o r f o r
R e p e t i t i o n Code )
23 disp (
)
24 disp (r , Code Rate , r =1/n ,pe , A v e r a g e P r o b i l i t y o f
E r r o r , Pe )
25 disp (
)
12
13
Chapter 3
Detection and Estimation
Scilab code Exa 3.1 Orthonormal basis for given set of signals
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// C a p t i o n : O r t h o n o r m a l b a s i s f o r g i v e n s e t o f s i g n a l s
// Example3 . 1 : F i n d i n g o r t h o n o r m a l b a s i s f o r t h e g i v e n
signals
// u s i n g GramSchmidt o r t h o g o n a l i z a t i o n p r o c e d u r e
clear ;
close ;
clc ;
T = 1;
t1 = 0:0.01: T /3;
t2 = 0:0.01:2* T /3;
t3 = T /3:0.01: T ;
t4 = 0:0.01: T ;
s1t = [0 , ones (1 , length ( t1 ) -2) ,0];
s2t = [0 , ones (1 , length ( t2 ) -2) ,0];
s3t = [0 , ones (1 , length ( t3 ) -2) ,0];
s4t = [0 , ones (1 , length ( t4 ) -2) ,0];
t5 = 0:0.01: T /3;
phi1t = sqrt (3/ T ) *[0 , ones (1 , length ( t5 ) -2) ,0];
t6 = T /3:0.01:2* T /3;
phi2t = sqrt (3/ T ) *[0 , ones (1 , length ( t6 ) -2) ,0];
t7 = 2* T /3:0.01: T ;
phi3t = sqrt (3/ T ) *[0 , ones (1 , length ( t7 ) -2) ,0];
//
14
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
figure
title ( F i g u r e 3 . 4 ( a ) S e t o f s i g n a l s t o be
orthonormalized )
subplot (4 ,1 ,1)
a = gca () ;
a . data_bounds = [0 ,0;2 ,2];
plot2d2 ( t1 , s1t ,5)
xlabel ( t )
ylabel ( s 1 ( t ) )
subplot (4 ,1 ,2)
a = gca () ;
a . data_bounds = [0 ,0;2 ,2];
plot2d2 ( t2 , s2t ,5)
xlabel ( t )
ylabel ( s 2 ( t ) )
subplot (4 ,1 ,3)
a = gca () ;
a . data_bounds = [0 ,0;2 ,2];
plot2d2 ( t3 , s3t ,5)
xlabel ( t )
ylabel ( s 3 ( t ) )
subplot (4 ,1 ,4)
a = gca () ;
a . data_bounds = [0 ,0;2 ,2];
plot2d2 ( t4 , s4t ,5)
xlabel ( t )
ylabel ( s 4 ( t ) )
//
figure
title ( F i g u r e 3 . 4 ( b ) The r e s u l t i n g s e t o f o r t h o n o r m a l
functions )
subplot (3 ,1 ,1)
a = gca () ;
a . data_bounds = [0 ,0;2 ,4];
plot2d2 ( t5 , phi1t ,5)
xlabel ( t )
ylabel ( p h i 1 ( t ) )
subplot (3 ,1 ,2)
15
a = gca () ;
a . data_bounds = [0 ,0;2 ,4];
plot2d2 ( t6 , phi2t ,5)
xlabel ( t )
ylabel ( p h i 2 ( t ) )
subplot (3 ,1 ,3)
a = gca () ;
a . data_bounds = [0 ,0;2 ,4];
plot2d2 ( t7 , phi3t ,5)
xlabel ( t )
ylabel ( p h i 3 ( t ) )
16
17
20
21
22
23
24
25
// C a p t i o n :MARY S i g n a l i n g
// Example3 . 2 : MARY SIGNALING
// S i g n a l c o n s t e l l a t i o n and R e p r e s e n t a t i o n o f d i b i t s
clear ;
close ;
clc ;
a =1; // a m p l i t u d e =1
T =1; // Symbol d u r a t i o n i n s e c o n d s
// Four m e s s a g e p o i n t s
Si1 = [( -3/2) * a * sqrt ( T ) ,( -1/2) * a * sqrt ( T ) ,(3/2) * a *
sqrt ( T ) ,(1/2) * a * sqrt ( T ) ];
a = gca () ;
a . data_bounds = [ -2 , -0.5;2 ,0.5]
plot2d ( Si1 ,[0 ,0 ,0 ,0] , -10)
xlabel ( p h i 1 ( t ) )
title ( F i g u r e 3 . 8 ( a ) S i g n a l c o n s t e l l a t i o n )
xgrid (1)
disp ( F i g u r e 3 . 8 ( b ) . R e p r e s e n t a t i o n o f t r a n s m i t t e d
dibits )
disp ( Loc . o f meg . p o i n t | ( 3/2) a s q r t (T) | ( 1 / 2 ) a s q r t (
T) | ( 3 / 2 ) a s q r t (T) | ( 1 / 2 ) a s q r t (T) )
disp (
)
disp ( T r a n s m i t t e d d i b i t |
00
|
|
11
|
10 )
disp ( )
disp ( )
disp ( F i g u r e 3 . 8 ( c ) . D e c i s i o n i n t e r v a l s f o r
received dibits )
disp ( R e c e i v e d d i b i t
|
00
|
|
11
|
10 )
disp (
01
01
)
26 disp ( I n t e r v a l on p h i 1 ( t ) | x1 < a . s q r t (T) | a . s q r t (
18
// C a p t i o n : Matched F i l t e r o u t p u t f o r RF p u l s e
// Example3 . 3 : MATCHED FILTER FOR RF PULSE
clear ;
close ;
clc ;
fc =4; // c a r r i e r f r e q u e n c y i n Hz
T =1;
t1 = 0:0.01: T ;
19
9
10
11
12
13
14
15
16
17
18
19
20
21
t )
ylabel (
22
23
24
25
26
27
28
29
phi ( t ) )
title ( F i g u r e 3 . 1 3 ( a ) RF p u l s e i n p u t )
subplot (2 ,1 ,2)
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
a . data_bounds = [0 , -1;1 ,1];
plot2d ( t2 , phiot ) ;
xlabel (
30
t )
ylabel (
31
phi0 ( t ) )
title ( F i g u r e 3 . 1 3 ( b ) Matched F i l t e r o u t p u t )
Scilab code Exa 3.4 Matched Filter output for Noise-like signal
// C a p t i o n : Matched F i l t e r o u t p u t f o r N o i s e l i k e
signal
2 // Example3 . 4 : Matched F i l t e r o u t p u t f o r n o i s e l i k e
1
20
21
3
4
5
6
7
8
9
10
11
12
13
14
15
16
input
clear ;
close ;
clc ;
phit =0.1* rand (1 ,10 , u n i f o r m ) ;
hopt = phit ;
phi0t = convol ( phit , hopt ) ;
phi0t = phi0t / max ( phi0t ) ;
subplot (2 ,1 ,1)
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
a . data_bounds = [0 , -1;1 ,1];
plot2d ([1: length ( phit ) ] , phit ) ;
xlabel (
17
t )
ylabel (
18
19
20
21
22
23
24
25
phi ( t ) )
title ( F i g u r e 3 . 1 6 ( a ) N o i s e L i k e i n p u t s i g n a l )
subplot (2 ,1 ,2)
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
a . data_bounds = [0 , -1;1 ,1];
plot2d ([1: length ( phi0t ) ] , phi0t ) ;
xlabel (
26
t )
ylabel (
27
phi0 ( t ) )
title ( F i g u r e 3 . 1 6 ( b ) Matched F i l t e r o u t p u t )
Scilab code Exa 3.6 Linear Predictor of Order one
22
23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// C a p t i o n : L i n e a r P r e d i c t o r o f Order one
// Example3 . 6 : LINEAR PREDICTION : P r e d i c t o r o f Order
One
clear ;
close ;
clc ;
Rxx = [0.6 1 0.6];
h01 = Rxx (3) / Rxx (2) ; // Rxx ( 2 ) = Rxx ( 0 ) , Rxx ( 3 ) =
Rxx ( 1 )
sigma_E = Rxx (2) - h01 * Rxx (3) ;
sigma_X = Rxx (2) ;
disp ( sigma_E , P r e d i c t o r e r r o r v a r i a n c e )
disp ( sigma_X , P r e d i c t o r i n p u t v a r i a n c e )
if ( sigma_X > sigma_E )
disp ( The p r e d i c t o r e r r o r v a r i a n c e i s l e s s t h a n
the variance of the p r e d i c t o r input )
end
Scilab code CF 3.29 Implementation of LMS Adaptive Filter algorithm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
w = w +( buffer * mu * desired ( i ) ) ;
20
end
21 end
22 subplot (4 ,1 ,1)
23 plot2d (t , x )
24 title ( O r i g n a l I n p u t S i g n a l )
25 subplot (4 ,1 ,2)
26 plot2d (t , noise ,2)
27 title ( random n o i s e )
28 subplot (4 ,1 ,3)
29 plot2d (t , x_n ,5)
30 title ( S i g n a l+n o i s e )
31 subplot (4 ,1 ,4)
32 plot ( desired )
33 title ( n o i s e removed s i g n a l )
25
26
Chapter 4
Sampling Process
Scilab code Exa 4.1 Bound on Aliasing error for Time-shifted sinc pulse
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// C a p t i o n : Bound on A l i a s i n g e r r o r f o r Time s h i f t e d
sinc pulse
// Example4 . 1 : Maximum bound on a l i a s i n g e r r o r f o r
sinc pulse
clc ;
close ;
t = -1.5:0.01:2.5;
g = 2* sinc_new (2* t -1) ;
disp ( max ( g ) , A l i a s i n g e r r o r c a n n o t e x c e e d max | g ( t ) |
)
f = -1:0.01:1;
G = [0 ,0 ,0 ,0 , ones (1 , length ( f ) ) ,0 ,0 ,0 ,0];
f1 = -1.04:0.01:1.04;
subplot (2 ,1 ,1)
a = gca () ;
a . data_bounds =[ -3 , -1;2 ,2];
a . x_location = o r i g i n
a . y_location = o r i g i n
plot2d (t , g )
xlabel (
t )
ylabel (
g( t ) )
title ( F i g u r e 4 . 8 ( a ) S i n c p u l s e g ( t ) )
subplot (2 ,1 ,2)
27
a = gca () ;
a . data_bounds =[ -2 ,0;2 ,2];
a . x_location = o r i g i n
a . y_location = o r i g i n
plot2d2 ( f1 , G )
xlabel (
f )
ylabel (
G( f ) )
title ( F i g u r e 4 . 8 ( b ) A m p l i t u d e s p e c t r u m |G( f ) | )
Scilab code Exa 4.3 Equalizier to compensate Aperture effect
// C a p t i o n : E q u a l i z e r t o c o m p e n s a t e A p e r t u r e e f f e c t
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Example4 . 3 : E q u a l i z e r t o Compensate f o r a p e r t u r e
effect
clc ;
close ;
T_Ts = 0.01:0.01:0.6;
//E = 1 / ( s i n c n e w ( 0 . 5 T Ts ) ) ;
E (1) =1;
for i = 2: length ( T_Ts )
E ( i ) = (( %pi /2) * T_Ts ( i ) ) /( sin (( %pi /2) * T_Ts ( i ) ) ) ;
end
a = gca () ;
a . data_bounds = [0 ,0.8;0.8 ,1.2];
plot2d ( T_Ts ,E ,5)
xlabel ( Duty c y c l e T/ Ts )
ylabel ( 1/ s i n c ( 0 . 5 ( T/ Ts ) ) )
title ( F i g u r e 4 . 1 6 N o r m a l i z e d e q u a l i z a t i o n ( t o
c o m p e n s a t e f o r a p e r t u r e e f f e c t ) p l o t t e d v e r s u s T/
Ts )
29
30
Chapter 5
Waveform Coding Techniques
Scilab code Exa 5.1 Average Transmitted Power for PCM
1 // C a p t i o n : A v e r a g e T r a n s m i t t e d Power f o r PCM
2 // Example5 . 1 : A v e r a g e T r a n s m i t t e d Power o f PCM
3 // Page 187
4 clear ;
5 clc ;
6 sigma_N = input ( E n t e r t h e n o i s e v a r i a n c e ) ;
7 k = input ( E n t e r t h e s e p a r a t i o n c o n s t a n t f o r on o f f
8
9
10
11
12
13
14
15
16
s i g n a l i n g );
M = input ( E n t e r t h e number o f d i s c r e t e a m p l i t u d e
l e v e l s f o r NRZ p o l a r ) ;
disp ( The a v e r a g e t r a n s m i t t e d power i s : )
P = ( k ^2) *( sigma_N ) *(( M ^2) -1) /12;
disp ( P )
// R e s u l t
// E n t e r t h e n o i s e v a r i a n c e 10 6
// E n t e r t h e s e p a r a t i o n c o n s t a n t f o r on o f f s i g n a l i n g
7
// E n t e r t h e number o f d i s c r e t e a m p l i t u d e l e v e l s f o r
NRZ p o l a r 2
// The a v e r a g e t r a n s m i t t e d power i s : 0 . 0 0 0 0 1 2 2
Scilab code Exa 5.2 Comaprision of M-ary PCM with ideal system (Channel Capacity Theorem)
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// C a p t i o n : Comparison o f Ma r y PCM w i t h i d e a l s y s t e m
( Channel C a p a c i t y Theorem )
// Example5 . 2 : Comparison o f Ma r y PCM s y s t e m
// Channel C a p a c i t y t h e o r e m
clear ;
close ;
clc ;
P_NoB_dB = [ -20:30]; // I n p u t s i g n a l to n o i s e r a t i o P/
NoB , d e c i b e l s
P_NoB = 10^( P_NoB_dB /10) ;
k =7; // f o r Ma r y PCM s y s t e m ;
Rb_B = log2 (1+(12/ k ^2) * P_NoB ) ; // bandwidth e f f i c i e n c y
i n b i t s / s e c /Hz
C_B = log2 (1+ P_NoB ) ; // i d e a l s y s t e m a c c o r d i n g t o
Shannon s c h a n n e l c a p a c i t y t h e o r e m
// p l o t
a = gca () ;
a . data_bounds = [ -30 ,0;40 ,10];
plot2d ( P_NoB_dB , C_B ,5)
plot2d ( P_NoB_dB , Rb_B ,5)
poly1 = a . children (1) . children (1) ;
poly1 . thickness =2;
poly1 . line_style = 4;
xlabel ( I n p u t s i g n a l to n o i s e r a t i o P/NoB , d e c i b e l s
)
ylabel ( Bandwidth e f f i c i e n c y , Rb/B , b i t s p e r s e c o n d
per hertz )
title ( F i g u r e 5 . 9 Comparison o f Ma r y PCM w i t h t h e
i d e a l ssytem )
legend ([ I d e a l System , PCM ])
Scilab code Exa 5.3 Signal-to-Quantization Noise Ratio of PCM
1
2
3
4
// C a p t i o n : S i g n a l to Q u a n t i z a t i o n N o i s e R a t i o o f PCM
// Example5 . 3 : S i g n a l to Q u a n t i z a t i o n n o i s e r a t i o
// Channel Bandwidth B
clear ;
32
33
5 clc ;
6 n = input ( E n t e r no . o f b i t s u s e d t o e n c o d e : )
7 W = input ( E n t e r t h e m e s s a g e s i g n a l b a n w i d t h i n Hz :
)
8 B = n*W;
9 disp (B , Channel w i d t h i n Hz : )
10 SNRo = 6* n - 7.2;
11 disp ( SNRo , Output S i g n a l t o n o i s e r a t i o i n dB : )
12 // R e s u l t 1 i f
n = 8 bits
13 // E n t e r no . o f b i t s u s e d t o e n c o d e : 8
14 // E n t e r t h e m e s s a g e s i g n a l b a n w i d t h i n Hz : 4 0 0 0
15 // Channel w i d t h i n Hz :
32000.
16 // Output S i g n a l t o n o i s e r a t i o i n dB : 4 0 . 8
17 // / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
18 // R e s u l t 2 i f n = 9 b i t s
19 // E n t e r no . o f b i t s u s e d t o e n c o d e : 9
20 // E n t e r t h e m e s s a g e s i g n a l b a n w i d t h i n Hz : 4 0 0 0
21 // Channel w i d t h i n Hz : 3 6 0 0 0 .
22 // Output S i g n a l t o n o i s e r a t i o i n dB : 4 6 . 8
23 // / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
24 // C o n c l u s i o n : c o m p a r i n g r e s u l t 1 w i t h r e s u l t 2 i f
25
number o f b i t s i n c r e a s e d by 1
// c o r r e s p o n d i n g o u t p u t s i g n a l t o n o i s e i n PCM
i n c r e a s e d by 6 dB .
Scilab code Exa 5.5 Output Signal-to-Noise ratio for Sinusoidal Modulation
1
2
3
4
5
6
// Example 5 : D e l t a M o d u l a t i o n t o a v o i d s l o p e
overload distortion
//maximum o u t p u t s i g n a l to n o i s e r a t i o f o r
s i n u s o i d a l modulation
// p a g e 207
clear ;
clc ;
a0 = input ( E n t e r t h e a m p l i t u d e o f s i n u s o i d a l s i g n a l
: );
34
7 f0 = input ( E n t e r t h e f r e q u e n c y o f
sinusoidal signal
i n Hz : ) ;
8 fs = input ( E n t e r t h e s a m p l i n g f r e q u e n c y i n s a m p l e s
per s e c o n d s : );
9 Ts = 1/ fs ; // S a m p l i n g i n t e r v a l
10 delta = 2* %pi * f0 * a0 * Ts ; // S t e p
11
12
13
14
15
16
17
18
19
20
21
22
23
s i z e to avoid s l o p e
overload
Pmax = ( a0 ^2) /2; //maximum p e r m i s s i b l e o u t p u t power
sigma_Q = ( delta ^2) /3; // Q u a n t i z a t i o n e r r o r o r n o i s e
variance
W = f0 ; //Maximum m e s s a g e bandwidth
N = W * Ts * sigma_Q ; // A v e r a g e o u t p u t n o i s e power
SNRo = Pmax / N ; // Maximum o u t p u t s i g n a l to n o i s e
ratio
SNRo_dB = 10* log10 ( SNRo ) ;
disp ( SNRo_dB , Maximum o u t p u t s i g n a l to n o s i e i n dB
f o r Delta Modualtion : )
// R e s u l t 1 f o r f s = 8 0 0 0 H e r t z
// E n t e r t h e a m p l i t u d e o f s i n u s o i d a l s i g n a l : 1
// E n t e r t h e f r e q u e n c y o f s i n u s o i d a l s i g n a l i n Hz
:4000
// E n t e r t h e s a m p l i n g f r e q u e n c y i n s a m p l e s p e r
seconds :8000
//Maximum o u t p u t s i g n a l to n o s i e i n dB f o r D e l t a
Modualtion : 5.1717849
//
//////////////////////////////////////////////////////////////////
// R e s u l t 2 f o r f s = 1 6 0 0 0 H e r t z
// E n t e r t h e a m p l i t u d e o f s i n u s o i d a l s i g n a l : 1
// E n t e r t h e f r e q u e n c y o f s i n u s o i d a l s i g n a l i n Hz
:4000
27 // E n t e r t h e s a m p l i n g f r e q u e n c y i n s a m p l e s p e r
seconds :16000
28 //Maximum o u t p u t s i g n a l to n o s i e i n dB f o r D e l t a
Modualtion : 3 . 8 5 9 1 1 5
29 //
//////////////////////////////////////////////////////////////////
24
25
26
35
// C o n c l u s i o n : c o m p a r i n g r e s u l t 1 w i t h r e s u l t 2 , i f
the sampling frequency
31 // i s d o u b l e d t h e s i g n a l t o n o i s e i n c r e a s e d by 9 dB
30
15
// C a p t i o n : uLaw companding
// F i g u r e 5 . 1 3 ( a ) Mulaw companding N o n l i n e a r
Quantization
// P l o t t i n g mulaw c h a r a c t e r i s t i c s f o r d i f f e r e n t
// V a l u e s o f mu
clc ;
x = 0:0.01:1; // N o r m a l i z e d i n p u t
mu = [0 ,5 ,255]; // d i f f e r e n t v a l u e s o f mu
for i = 1: length ( mu )
[ Cx (i ,:) , Xmax ( i ) ] = mulaw (x , mu ( i ) ) ;
end
plot2d ( x / Xmax (1) , Cx (1 ,:) ,2)
plot2d ( x / Xmax (2) , Cx (2 ,:) ,4)
plot2d ( x / Xmax (3) , Cx (3 ,:) ,6)
xtitle ( C o m p r e s s i o n Law : uLaw companding ,
N o r m a l i z e d I n p u t | x | , N o r m a l i z e d Output | c ( x ) | )
;
legend ([ u =0 ] ,[ u=5 ] ,[ u=255 ])
Scilab code CF 5.13b (b) A-law companding
1
2
3
4
5
6
7
8
// C a p t i o n : Alaw companding
// F i g u r e 5 . 1 3 ( b )Alaw companding , N o n l i n e a r
Quantization
// P l o t t i n g Alaw c h a r a c t e r i s t i c s f o r d i f f e r e n t
// V a l u e s o f A
clc ;
x = 0:0.01:1; // N o r m a l i z e d i n p u t
A = [1 ,2 ,87.56]; // d i f f e r e n t v a l u e s o f A
for i = 1: length ( A )
36
37
N o r m a l i z e d I n p u t | x | , N o r m a l i z e d Output | c ( x ) | )
;
15 legend ([ A =1 ] ,[ A=2 ] ,[ A= 8 7 . 5 6 ])
38
Chapter 6
Baseband Shaping for Data
Transmission
Scilab code Exa 6.1 Bandwidth Requirements of the T1 carrier
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// C a p t i o n : Bandwidth R e q u i r e m e n t s o f t h e T1 c a r r i e r
// Example6 . 1 : Bandwidth R e q u i r e m e n t s o f t h e T1
Carrier
// Page 251
clear ;
clc ;
Tb = input ( E n t e r t h e b i t d u r a t i o n o f t h e TDM s i g n a l
: )
Bo = 1/(2* Tb ) ; // minimum t r a n s m i s s i o n bandwidth o f T1
system
// T r a n s m i s s i o n bandwidth f o r r a i s e d c o s i n e s p e c t r u m
B
alpha = 1; // c o s i n e r o l l o f f f a c t o r
f1 = Bo *(1 - alpha ) ;
B = 2* Bo - f1 ;
disp (B , T r a n s m i s s i o n bandwidth f o r r a i s e d c o s i n e
s p e c t r u m i n Hz : )
// R e s u l t
// E n t e r t h e b i t d u r a t i o n o f t h e TDM s i g n a l
:0.64710 6
// T r a n s m i s s i o n bandwidth f o r r a i s e d c o s i n e s p e c t r u m
39
i n Hz : 1 5 4 5 5 9 5 . 1
Scilab code CF 6.1a (a) Nonreturn-to-zero unipolar format
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// C a p t i o n : N o n r e t u r n to z e r o u n i p o l a r f o r m a t
// F i g u r e 6 . 1 ( a ) : D i s c r e t e PAM S i g n a l s G e n e r a t i o n
// [ 1 ] . U n i p o l a r NRZ
// p a g e 235
clear ;
close ;
clc ;
x = [0 1 0 0 0 1 0 0 1 1];
binary_zero = [0 0 0 0 0 0 0 0 0 0];
binary_one = [1 1 1 1 1 1 1 1 1 1];
L = length ( x ) ;
L1 = length ( binary_zero ) ;
total_duration = L * L ;
// p l o t t i n g
a = gca () ;
a . data_bounds =[0 -2; L * L1 2];
for i =1: L
if ( x ( i ) ==0)
plot ([ i *L - L +1: i * L ] , binary_zero ) ;
poly1 = a . children (1) . children (1) ;
poly1 . thickness =3;
else
plot ([ i *L - L +1: i * L ] , binary_one ) ;
poly1 = a . children (1) . children (1) ;
poly1 . thickness =3;
end
end
xgrid (1)
title ( U n i p o l a r NRZ )
Scilab code CF 6.1b (b) Nonreturn-to-zero polar format
// C a p t i o n : N o n r e t u r n to z e r o p o l a r f o r m a t
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// F i g u r e 6 . 1 ( b ) : D i s c r e t e PAM S i g n a l s G e n e r a t i o n
// [ 2 ] . P o l a r NRZ
// p a g e 235
clear ;
close ;
clc ;
x = [0 1 0 0 0 1 0 0 1 1];
binary_negative = [ -1 -1 -1 -1 -1 -1 -1 -1 -1 -1];
binary_positive = [1 1 1 1 1 1 1 1 1 1];
L = length ( x ) ;
L1 = length ( binary_negative ) ;
total_duration = L * L1 ;
// p l o t t i n g
a = gca () ;
a . data_bounds =[0 -2; L * L1 2];
for i =1: L
if ( x ( i ) ==0)
plot ([ i *L - L +1: i * L ] , binary_negative ) ;
poly1 = a . children (1) . children (1) ;
poly1 . thickness =3;
else
plot ([ i *L - L +1: i * L ] , binary_positive ) ;
poly1 = a . children (1) . children (1) ;
poly1 . thickness =3;
end
end
xgrid (1)
title ( P o l a r NRZ )
Scilab code CF 6.1c (c) Nonreturn-to-zero bipolar format
1
2
3
4
5
6
// C a p t i o n : N o n r e t u r n to z e r o b i p o l a r f o r m a t
// F i g u r e 6 . 1 ( c ) : D i s c r e t e PAM S i g n a l s G e n e r a t i o n
// [ 3 ] . B i P o l a r NRZ
// p a g e 235
clear ;
close ;
42
43
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
clc ;
x = [0 1 1 0 0 1 0 0 1 1];
binary_negative = [ -1 -1 -1 -1 -1 -1 -1 -1 -1 -1];
binary_zero = [0 0 0 0 0 0 0 0 0 0];
binary_positive = [1 1 1 1 1 1 1 1 1 1];
L = length ( x ) ;
L1 = length ( binary_negative ) ;
total_duration = L * L1 ;
// p l o t t i n g
a = gca () ;
a . data_bounds =[0 -2; L * L1 2];
for i =1: L
if ( x ( i ) ==0)
plot ([ i *L - L +1: i * L ] , binary_zero ) ;
poly1 = a . children (1) . children (1) ;
poly1 . thickness =3;
elseif (( x ( i ) ==1) &( x (i -1) ~=1) )
plot ([ i *L - L +1: i * L ] , binary_positive ) ;
poly1 = a . children (1) . children (1) ;
poly1 . thickness =3;
else
plot ([ i *L - L +1: i * L ] , binary_negative ) ;
poly1 = a . children (1) . children (1) ;
poly1 . thickness =3;
end
end
xgrid (1)
title ( B i P o l a r NRZ )
Scilab code Exa 6.2 Duobinary Encoding
1 // C a p t i o n : D u o b i n a r y E n c o d i n g
2 // Example6 . 2 : P r e c o d e d D u o b i n a r y c o d e r and d e c o d e r
3 // Page 256
4 clc ;
5 b = [0 ,0 ,1 ,0 ,1 ,1 ,0]; // i n p u t b i n a r y s e q u e n c e : p r e c o d e r
input
44
45
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// 1 .
1.
0.
0.
1.
//
// P r e c o d e r o u t p u t i n v o l t s :
//
// 1 .
1. 1. 1.
1.
//
// D u o b i n a r y c o d e r o u t p u t i n v o l t s
//
// 2 .
2.
0. 2.
0.
//
// R e c o v e r e d o r i g i n a l s e q u e n c e a t
//
// 0 .
0.
1.
0.
1.
0.
0.
1.
1.
:
0.
2.
d e t e c t o r oupupt :
1.
0.
Scilab code Exa 6.3 Generation of bipolar output for duobinary coder
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// C a p t i o n : G e n e r a t i o n o f b i p o l a r o u t p u t f o r d u o b i n a r y
coder
// Example6 . 3 : O p e r a t i o n o f C i r c u i t i n f i g u r e 6 . 1 3
// f o r g e n e r a t i n g b i p o l a r f o r m a t
// p a g e 256 and p a g e 257
// R e f e r T a b l e 6 . 4
clc ;
x = [0 ,1 ,1 ,0 ,1 ,0 ,0 ,0 ,1 ,1]; // i n p u t b i n a r y s e q u e n c e :
precoder input
y (1) = 1;
for k =2: length ( x ) +1
y ( k ) = xor ( x (k -1) ,y (k -1) ) ;
end
y_delay = y (1: $ -1) ;
y = y ;
y_delay = y_delay ;
disp (y , Modulo 2 a d d e r o u t p u t : )
disp ( y_delay , D e l a y e l e m e n t o u t p u t : )
for k = 1: length ( y_delay )
z ( k ) = y ( k +1) - y_delay ( k ) ;
end
z = z ;
47
21
22
23
24
25
26
27
28
disp (z , d i f f e r e n t i a l e n c o d e r b i p o l a r o u t p u t i n
: )
// R e s u l t
// Modulo 2 a d d e r o u t p u t :
//
1.
1.
0.
1.
1.
0.
0.
0.
1.
0.
// D e l a y e l e m e n t o u t p u t :
//
1.
1.
0.
1.
1.
0.
0.
0.
1.
// d i f f e r e n t i a l e n c o d e r b i p o l a r o u t p u t i n v o l t s
//
0. 1.
1.
0. 1.
0.
0.
1. 1.
volts
0.
0.
:
0.
// C a p t i o n : Power S p e c t r a o f d i f f e r e n t b i n a r y d a t a
formats
// F i g u r e 6 . 4 : Power S p e c t a l D e n s i t i e s o f
// D i f f e r e n t L i n e Coding T e c h n i q u e s
// [ 1 ] . NRZ P o l a r Format [ 2 ] . NRZ B i p o l a r f o r m a t
// [ 3 ] . NRZ U n i p o l a r f o r m a t [ 4 ] . M a n c h e s t e r f o r m a t
// Page 241
close ;
clc ;
// [ 1 ] . NRZ P o l a r f o r m a t
a = input ( E n t e r t h e A m p l i t u d e v a l u e : ) ;
fb = input ( E n t e r t h e b i t r a t e : ) ;
Tb = 1/ fb ; // b i t d u r a t i o n
f = 0:1/(100* Tb ) :2/ Tb ;
for i = 1: length ( f )
Sxxf_NRZ_P ( i ) = ( a ^2) * Tb *( sinc_new ( f ( i ) * Tb ) ^2) ;
Sxxf_NRZ_BP ( i ) = ( a ^2) * Tb *(( sinc_new ( f ( i ) * Tb ) ) ^2)
*(( sin ( %pi * f ( i ) * Tb ) ) ^2) ;
if ( i ==1)
Sxxf_NRZ_UP ( i ) = ( a ^2) *( Tb /4) *(( sinc_new ( f ( i ) * Tb
) ) ^2) +( a ^2) /4;
else
48
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// C a p t i o n : I d e a l s o l u t i o n f o r z e r o I S I
// F i g u r e 6 . 6 ( b ) : I d e a l S o l u t i o n f o r I n t e r s y m b o l
Interference
3 // SINC p u l s e
1
2
49
50
4
5
6
7
8
9
10
11
12
13
14
15
// p a g e 249
rb = input ( E n t e r t h e b i t r a t e : ) ;
Bo = rb /2;
t = -3:1/100:3;
x = sinc_new (2* Bo * t ) ;
plot (t , x )
xlabel ( t> ) ;
ylabel ( p ( t )> ) ;
title ( SINC P u l s e f o r z e r o I S I )
xgrid (1)
// R e s u l t
// E n t e r t h e b i t r a t e : 1
Scilab code CF 6.7b (b) Practical solution: Raised Cosine
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// C a p t i o n : P r a c t i c a l s o l u t i o n : R a i s e d C o s i n e
// F i g u r e 6 . 7 ( b ) : P r a c t i c a l S o l u t i o n f o r I n t e r s y m b o l
Interference
// R a i s e d C o s i n e Spectrum
// p a g e 250
close ;
clc ;
rb = input ( E n t e r t h e b i t r a t e : ) ;
Tb =1/ rb ;
t = -3:1/100:3;
Bo = rb /2;
Alpha =0;
// I n t i a l i z e d t o z e r o
x = t / Tb ;
for j =1:3
for i =1: length ( t )
if (( j ==3) &(( t ( i ) ==0.5) |( t ( i ) == -0.5) ) )
p (j , i ) = sinc_new (2* Bo * t ( i ) ) ;
else
num = sinc_new (2* Bo * t ( i ) ) * cos (2* %pi * Alpha *
Bo * t ( i ) ) ;
den =
1 -16*( Alpha ^2) *( Bo ^2) *( t ( i ) ^2) +0.01;
p (j , i ) = num / den ;
51
52
21
end
22
end
23
Alpha = Alpha +0.5;
24 end
25 a = gca () ;
26 plot2d (t , p (1 ,:) )
27 plot2d (t , p (2 ,:) )
28 poly1 = a . children (1) . children (1) ;
29 poly1 . foreground =2;
30 plot2d (t , p (3 ,:) )
31 poly2 = a . children (1) . children (1) ;
32 po1y2 . foreground =4;
33 poly2 . line_style = 3;
34 xlabel ( t /Tb> ) ;
35 ylabel ( p ( t )> ) ;
36 title ( RAISED COSINE SPECTRUM P r a c t i c a l
Solution
for ISI )
legend ([ R O l l o f f F a c t o r =0 , R O l l o f f F a c t o r =0.5 ,
R O l l o f f F a c t o r =1 ])
38 xgrid (1)
39 // R e s u l t
40 // E n t e r t h e b i t r a t e : 1
37
// C a p t i o n : F r e q u e n c y r e s p o n s e o f d u o b i n a r y c o n v e r s i o n
filter
// F i g u r e 6 . 9 : F r e q u e n c y R e s p o n s e o f D u o b i n a r y
Conversion f i l t e r
// ( a ) A m p l i t u d e R e s p o n s e
// ( b ) Phase R e s p o n s e
// Page 254
clear ;
close ;
clc ;
rb = input ( E n t e r t h e b i t r a t e= ) ;
Tb =1/ rb ; // B i t d u r a t i o n
53
54
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
f = - rb /2:1/100: rb /2;
Amplitude_Response = abs (2* cos ( %pi * f .* Tb ) ) ;
Phase_Response = -( %pi * f .* Tb ) ;
subplot (2 ,1 ,1)
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
plot2d (f , Amplitude_Response ,2)
poly1 = a . children (1) . children (1) ;
poly1 . thickness = 2; // t h e t i c k n e s s o f a c u r v e .
xlabel ( F r e q u e n c y f > )
ylabel ( | H( f ) | > )
title ( A m p l i t u d e R e p s o n s e o f D u o b i n a r y S i n g a l i n g )
subplot (2 ,1 ,2)
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
plot2d (f , Phase_Response ,5)
poly1 = a . children (1) . children (1) ;
poly1 . thickness = 2; // t h e t i c k n e s s o f a c u r v e .
xlabel (
F r e q u e n c y f > )
ylabel (
<H( f ) > )
title ( Phase R e p s o n s e o f D u o b i n a r y S i n g a l i n g )
// R e s u l t
// E n t e r t h e b i t r a t e =8
Scilab code CF 6.15 Frequency response of modified duobinary conversion filter
// C a p t i o n : F r e q u e n c y r e s p o n s e o f m o d i f i e d d u o b i n a r y
conversion f i l t e r
2 // F i g u r e 6 . 1 5 : F r e q u e n c y R e s p o n s e o f M o d i f i e d
duobinary conversion f i l t e r
3 // ( a ) A m p l i t u d e R e s p o n s e
4 // ( b ) Phase R e s p o n s e
1
55
56
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// p a g e 259
clear ;
close ;
clc ;
rb = input ( E n t e r t h e b i t r a t e= ) ;
Tb =1/ rb ; // B i t d u r a t i o n
f = - rb /2:1/100: rb /2;
Amplitude_Response = abs (2* sin (2* %pi * f .* Tb ) ) ;
Phase_Response = -(2* %pi * f .* Tb ) ;
subplot (2 ,1 ,1)
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
plot2d (f , Amplitude_Response ,2)
poly1 = a . children (1) . children (1) ;
poly1 . thickness = 2; // t h e t i c k n e s s o f a c u r v e .
xlabel ( F r e q u e n c y f > )
ylabel ( | H( f ) | > )
title ( A m p l i t u d e R e p s o n s e o f M o d i f i e d D u o b i n a r y
Singaling )
xgrid (1)
subplot (2 ,1 ,2)
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
plot2d (f , Phase_Response ,5)
poly1 = a . children (1) . children (1) ;
poly1 . thickness = 2; // t h e t i c k n e s s o f a c u r v e .
xlabel (
F r e q u e n c y f > )
ylabel (
<H( f ) > )
title ( Phase R e p s o n s e o f M o d i f i e d D u o b i n a r y
Singaling )
xgrid (1)
// R e s u l t
// E n t e r t h e b i t r a t e =8
57
58
Chapter 7
Digital Modulation Techniques
Scilab code Exa 7.1 QPSK Waveform
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// C a p t i o n : Waveforms o f D i f f e r e n t D i g i t a l M o d u l a t i o n
techniques
// Example7 . 1 S i g n a l S p a c e Diagram f o r c o h e r e n t QPSK
system
clear ;
clc ;
close ;
M =4;
i = 1: M ;
t = 0:0.001:1;
for i = 1: M
s1 (i ,:) = cos (2* %pi *2* t ) * cos ((2* i -1) * %pi /4) ;
s2 (i ,:) = - sin (2* %pi *2* t ) * sin ((2* i -1) * %pi /4) ;
end
S1 =[];
S2 = [];
S = [];
Input_Sequence =[0 ,1 ,1 ,0 ,1 ,0 ,0 ,0];
m = [3 ,1 ,1 ,2];
for i =1: length ( m )
S1 = [ S1 s1 ( m ( i ) ,:) ];
S2 = [ S2 s2 ( m ( i ) ,:) ];
end
59
22 S = S1 + S2 ;
23 figure
24 subplot (3 ,1 ,1)
25 a = gca () ;
26 a . x_location = o r i g i n ;
27 plot ( S1 )
28 title ( B i n a r y PSK wave o f Oddnumbered b i t s
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
of input
sequence )
subplot (3 ,1 ,2)
a = gca () ;
a . x_location = o r i g i n ;
plot ( S2 )
title ( B i n a r y PSK wave o f Evennumbered b i t s o f
input sequence )
subplot (3 ,1 ,3)
a = gca () ;
a . x_location = o r i g i n ;
plot ( S )
title ( QPSK waveform )
// s i n ( ( 2 i 1) %pi / 4 ) %i ;
// a n n o t = d e c 2 b i n ( [ 0 : l e n g t h ( y ) 1] , l o g 2 (M) ) ;
// d i s p ( y , c o o r d i n a t e s o f m e s s a g e p o i n t s )
// d i s p ( annot , d i b i t s v a l u e )
// f i g u r e ;
// a =g c a ( ) ;
// a . d a t a b o u n d s = [ 1 , 1 ; 1 , 1 ] ;
// a . x l o c a t i o n = o r i g i n ;
// a . y l o c a t i o n = o r i g i n ;
// p l o t 2 d ( r e a l ( y ( 1 ) ) , imag ( y ( 1 ) ) , 2)
// p l o t 2 d ( r e a l ( y ( 2 ) ) , imag ( y ( 2 ) ) , 4)
// p l o t 2 d ( r e a l ( y ( 3 ) ) , imag ( y ( 3 ) ) , 5)
// p l o t 2 d ( r e a l ( y ( 4 ) ) , imag ( y ( 4 ) ) , 9)
// x l a b e l (
In
Phase ) ;
// y l a b e l (
Quadrature ) ;
60
// t i t l e ( C o n s t e l l a t i o n f o r QPSK )
// l e g e n d ( [ m e s s a g e p o i n t 1 ( d i b i t 1 0 ) ; m e s s a g e
p o i nt 2 ( d i b i t 00) ; message p o i nt 3 ( d i b i t 01)
; message p o in t 4 ( d i b i t 11) ] , 5 )
Scilab code CF 7.1 Waveform of Different Digital Modulation techniques
// C a p t i o n : Waveforms o f D i f f e r e n t D i g i t a l M o d u l a t i o n
techniques
2 // F i g u r e 7 . 1
3 // D i g i t a l M o d u l a t i o n T e c h n i q u e s
4 //To P l o t t h e ASK, FSK and PSk Waveforms
1
61
5 clear ;
6 clc ;
7 close ;
8 f = input ( E n t e r t h e Analog C a r r i e r F r e q u e n c y i n Hz
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
);
t = 0:1/512:1;
x = sin (2* %pi * f * t ) ;
I = input ( E n t e r t h e d i g i t a l b i n a r y d a t a ) ;
// G e n e r a t i o n o f ASK Waveform
Xask = [];
for n = 1: length ( I )
if (( I ( n ) ==1) &( n ==1) )
Xask = [x , Xask ];
elseif (( I ( n ) ==0) &( n ==1) )
Xask = [ zeros (1 , length ( x ) ) , Xask ];
elseif (( I ( n ) ==1) &( n ~=1) )
Xask = [ Xask , x ];
elseif (( I ( n ) ==0) &( n ~=1) )
Xask = [ Xask , zeros (1 , length ( x ) ) ];
end
end
// G e n e r a t i o n o f FSK Waveform
Xfsk = [];
x1 = sin (2* %pi * f * t ) ;
x2 = sin (2* %pi *(2* f ) * t ) ;
for n = 1: length ( I )
if ( I ( n ) ==1)
Xfsk = [ Xfsk , x2 ];
elseif ( I ( n ) ~=1)
Xfsk = [ Xfsk , x1 ];
end
end
// G e n e r a t i o n o f PSK Waveform
Xpsk = [];
x1 = sin (2* %pi * f * t ) ;
x2 = - sin (2* %pi * f * t ) ;
for n = 1: length ( I )
if ( I ( n ) ==1)
62
42
Xpsk = [ Xpsk , x1 ];
43
elseif ( I ( n ) ~=1)
44
Xpsk = [ Xpsk , x2 ];
45
end
46 end
47 figure
48 plot (t , x )
49 xtitle ( Analog C a r r i e r S i g n a l
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
f o r D i g i t a l Modulation
)
xgrid
figure
plot ( Xask )
xtitle ( A m p l i t u d e S h i f t Keying )
xgrid
figure
plot ( Xfsk )
xtitle ( F r e q u e n c y S h i f t Keying )
xgrid
figure
plot ( Xpsk )
xtitle ( Phase S h i f t Keying )
xgrid
// Example
// E n t e r t h e Analog C a r r i e r F r e q u e n c y 2
// E n t e r t h e d i g i t a l b i n a r y d a t a [ 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 ]
Scilab code Exa 7.2 MSK waveforms
1
2
3
4
5
6
7
8
9
// C a p t i o n : S i g n a l S p a c e d i a g r a m f o r c o h e r e n t BPSK
// Example7 . 2 : S e q u e n c e and Waveforms f o r MSK s i g n a l
// T a b l e 7 . 2 s i g n a l s p a c e c h a r a c t e r i z a t i o n o f MSK
clear
clc ;
close ;
M =2;
Tb =1;
t1 = - Tb :0.01: Tb ;
63
64
65
66
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
t2 = 0:0.01:2* Tb ;
phi1 = cos (2* %pi * t1 ) .* cos (( %pi /(2* Tb ) ) * t1 ) ;
phi2 = sin (2* %pi * t2 ) .* sin (( %pi /(2* Tb ) ) * t2 ) ;
teta_0 = [0 , %pi ];
teta_tb = [ %pi /2 , - %pi /2];
S1 = [];
S2 = [];
for i = 1: M
s1 ( i ) = cos ( teta_0 ( i ) ) ;
s2 ( i ) = - sin ( teta_tb ( i ) ) ;
S1 = [ S1 s1 ( i ) * phi1 ];
S2 = [ S2 s2 (1) * phi2 ];
end
for i = M : -1:1
S1 = [ S1 s1 ( i ) * phi1 ];
S2 = [ S2 s2 (2) * phi2 ];
end
Input_Sequence =[1 ,1 ,0 ,1 ,0 ,0 ,0];
S = [];
t = 0:0.01:1;
S = [ S cos (0) * cos (2* %pi * t ) - sin ( %pi /2) * sin (2* %pi * t ) ];
S = [ S cos (0) * cos (2* %pi * t ) - sin ( %pi /2) * sin (2* %pi * t ) ];
S = [ S cos ( %pi ) * cos (2* %pi * t ) - sin ( %pi /2) * sin (2* %pi * t )
];
S = [ S cos ( %pi ) * cos (2* %pi * t ) - sin ( - %pi /2) * sin (2* %pi * t
) ];
S = [ S cos (0) * cos (2* %pi * t ) - sin ( - %pi /2) * sin (2* %pi * t )
];
S = [ S cos (0) * cos (2* %pi * t ) - sin ( - %pi /2) * sin (2* %pi * t )
];
S = [ S cos (0) * cos (2* %pi * t ) - sin ( - %pi /2) * sin (2* %pi * t )
];
y = [ s1 (1) , s2 (1) ; s1 (2) , s2 (1) ; s1 (2) , s2 (2) ; s1 (1) , s2 (2)
];
disp (y , c o o r d i n a t e s o f m e s s a g e p o i n t s )
figure
subplot (3 ,1 ,1)
a = gca () ;
67
42
43
44
45
46
47
48
49
50
51
52
53
54
a . x_location = o r i g i n ;
plot ( S1 )
title ( S c a l e d t i m e f u n c t i o n s 1 p h i 1 ( t ) )
subplot (3 ,1 ,2)
a = gca () ;
a . x_location = o r i g i n ;
plot ( S2 )
title ( S c a l e d t i m e f u n c t i o n s 2 p h i 2 ( t ) )
subplot (3 ,1 ,3)
a = gca () ;
a . x_location = o r i g i n ;
plot ( S )
title ( O b t a i n e d by a d d i n g s 1 p h i 1 ( t )+s 2 p h i 2 ( t ) on a
b i t byb i t b a s i s )
Scilab code CF 7.2 Signal Space diagram for coherent BPSK
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// C a p t i o n : S i g n a l S p a c e d i a g r a m f o r c o h e r e n t BPSK
// F i g u r e 7 . 2 S i g n a l S p a c e Diagram f o r c o h e r e n t BPSK
system
clear
clc ;
close ;
M =2;
i = 1: M ;
y = cos (2* %pi +( i -1) * %pi ) ;
annot = dec2bin ([ length ( y ) -1: -1:0] , log2 ( M ) ) ;
disp (y , c o o r d i n a t e s o f m e s s a g e p o i n t s )
disp ( annot , Mes sa ge p o i n t s )
figure ;
a = gca () ;
a . data_bounds = [ -2 , -2;2 ,2];
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
plot2d ( real ( y (1) ) , imag ( y (1) ) , -9)
plot2d ( real ( y (2) ) , imag ( y (2) ) , -5)
xlabel (
68
69
InPhase ) ;
20 ylabel (
21
22
Quadrature );
title ( C o n s t e l l a t i o n f o r BPSK )
legend ([ m e s s a g e p o i n t 1 ( b i n a r y 1 ) ; m e s s a g e p o i n t
2 ( b i n a r y 0 ) ] ,5)
Scilab code Tab 7.3 Illustration the generation of DPSK signal
// C a p t i o n : I l l u s t r a t i n g t h e g e n e r a t i o n o f DPSK s i g n a l
70
28
// T a b l e 7 . 3 G e n e r a t i o n o f D i f f e r e n t i a l Phase s h i f t
keying s i g n a l
clc ;
bk = [1 ,0 ,0 ,1 ,0 ,0 ,1 ,1]; // i n p u t d i g i t a l s e q u e n c e
for i = 1: length ( bk )
if ( bk ( i ) ==1)
bk_not ( i ) =~1;
else
bk_not ( i ) = 1;
end
end
dk_1 (1) = 1& bk (1) ; // i n i t i a l v a l u e o f d i f f e r e n t i a l
encoded sequence
dk_1_not (1) =0& bk_not (1) ;
dk (1) = xor ( dk_1 (1) , dk_1_not (1) ) // f i r s t b i t o f dpsk
encoder
for i =2: length ( bk )
dk_1 ( i ) = dk (i -1) ;
dk_1_not ( i ) = ~ dk (i -1) ;
dk ( i ) = xor (( dk_1 ( i ) & bk ( i ) ) ,( dk_1_not ( i ) & bk_not ( i )
));
end
for i =1: length ( dk )
if ( dk ( i ) ==1)
dk_radians ( i ) =0;
elseif ( dk ( i ) ==0)
dk_radians ( i ) = %pi ;
end
end
disp ( T a b l e 7 . 3 I l l u s t r a t i n g t h e G e n e r a t i o n o f DPSK
Signal )
disp (
29
30
31
32
)
disp ( bk , ( bk ) )
bk_not = bk_not ;
disp ( bk_not , ( b k n o t ) )
dk = dk ;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
71
33
34
35
36
disp ( dk , D i f f e r e n t i a l l y e n c o d e d s e q u e n c e ( dk ) )
dk_radians = dk_radians ;
disp ( dk_radians , T r a n s m i t t e d p h a s e i n r a d i a n s )
disp (
)
Scilab code CF 7.4 Signal Space diagram for coherent BFSK
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// C a p t i o n : S i g n a l S p a c e d i a g r a m f o r c o h e r e n t BFSK
// F i g u r e 7 . 4 S i g n a l S p a c e Diagram f o r c o h e r e n t BFSK
system
clear
clc ;
close ;
M =2;
y = [1 ,0;0 ,1];
annot = dec2bin ([ M -1: -1:0] , log2 ( M ) ) ;
disp (y , c o o r d i n a t e s o f m e s s a g e p o i n t s )
disp ( annot , Mes sa ge p o i n t s )
figure ;
a = gca () ;
a . data_bounds = [ -2 , -2;2 ,2];
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
plot2d ( y (1 ,1) ,y (1 ,2) , -9)
plot2d ( y (2 ,1) ,y (2 ,2) , -5)
xlabel (
InPhase ) ;
19 ylabel (
Quadrature );
20 title ( C o n s t e l l a t i o n f o r BFSK )
21 legend ([ m e s s a g e p o i n t 1 ( b i n a r y 1 ) ; m e s s a g e p o i n t
2 ( b i n a r y 0 ) ] ,5)
72
73
Scilab code CF 7.6 Signal space diagram for coherent QPSK waveform
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// C a p t i o n : S i g n a l s p a c e d i a g r a m f o r c o h e r e n t QPSK
waveform
// F i g u r e 7 . 6 S i g n a l S p a c e Diagram f o r c o h e r e n t QPSK
system
clear
clc ;
close ;
M =4;
i = 1: M ;
y = cos ((2* i -1) * %pi /4) - sin ((2* i -1) * %pi /4) * %i ;
annot = dec2bin ([0: M -1] , log2 ( M ) ) ;
disp (y , c o o r d i n a t e s o f m e s s a g e p o i n t s )
disp ( annot , d i b i t s v a l u e )
figure ;
a = gca () ;
a . data_bounds = [ -1 , -1;1 ,1];
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
plot2d ( real ( y (1) ) , imag ( y (1) ) , -2)
plot2d ( real ( y (2) ) , imag ( y (2) ) , -4)
plot2d ( real ( y (3) ) , imag ( y (3) ) , -5)
plot2d ( real ( y (4) ) , imag ( y (4) ) , -9)
xlabel (
In
Phase ) ;
ylabel (
Quadrature );
title ( C o n s t e l l a t i o n f o r QPSK )
legend ([ m e s s a g e p o i n t 1 ( d i b i t 1 0 ) ; m e s s a g e p o i n t
2 ( d i b i t 00) ; message p o i nt 3 ( d i b i t 01) ;
m e s s a g e p o i n t 4 ( d i b i t 1 1 ) ] ,5)
Scilab code Tab 7.6 Bndwidth efficiency of M ary PSK signals
74
75
1
2
3
4
5
6
7
8
9
10
11
// C a p t i o n : Bandwidth e f f i c i e n c y o f Ma r y PSK s i g n a l s
// T a b l e 7 . 6 : Bandwidth E f f i c i e n c y o f Ma r y PSK
signals
clear ;
clc ;
close ;
M = [2 ,4 ,8 ,16 ,32 ,64]; //Ma r y
Ruo = log2 ( M ) ./2; // Bandwidth e f f i c i e n c y i n b i t s / s /
Hz
disp ( T a b l e 7 . 7 Bandwidth E f f i c i e n c y o f Ma r y PSK
signals )
disp (
)
disp (M , M )
disp (
)
12 disp ( Ruo , r i n b i t s / s /Hz )
13 disp (
)
Scilab code Tab 7.7 Bandwidth efficiency of M ary FSK signals
1 // C a p t i o n : Bandwidth e f f i c i e n c y o f Ma r y FSK s i g n a l s
2 // T a b l e 7 . 7 : Bandwidth E f f i c i e n c y o f Ma r y FSK
3 clear ;
4 clc ;
5 close ;
6 M = [2 ,4 ,8 ,16 ,32 ,64]; //Ma r y
7 Ruo = 2* log2 ( M ) ./ M ; // Bandwidth e f f i c i e n c y i n b i t s / s
/Hz
//M = M ;
// Ruo = Ruo ;
disp ( T a b l e 7 . 7 Bandwidth E f f i c i e n c y o f Ma r y FSK
signals )
11 disp (
8
9
10
76
)
12 disp (M , M )
13 disp (
)
14 disp ( Ruo , r i n b i t s / s /Hz )
15 disp (
)
Scilab code CF 7.29 Power Spectra of BPSK and BFSK signals
77
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
1
2
79
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Spectrums
// c l e a r ;
// c l o s e ;
// c l c ;
rb = input ( E n t e r t h e b i t r a t e i n b i t s p e r s e c o n d : )
;
Eb = input ( E n t e r t h e Energy o f b i t : ) ;
f = 0:1/(100* rb ) :(4/ rb ) ;
Tb = 1/ rb ; // b i t d u r a t i o n i n s e c o n d s
for i = 1: length ( f )
if ( f ( i ) ==0.5)
SB_MSK ( i ) = 4* Eb * f ( i ) ;
else
SB_MSK ( i ) = (32* Eb /( %pi ^2) ) *( cos (2* %pi * Tb * f ( i ) )
/((4* Tb * f ( i ) ) ^2 -1) ) ^2;
end
SB_QPSK ( i ) = 4* Eb * sinc_new ((2* Tb * f ( i ) ) ) ^2;
end
a = gca () ;
plot ( f * Tb , SB_MSK /(4* Eb ) ) ;
plot ( f * Tb , SB_QPSK /(4* Eb ) ) ;
poly1 = a . children (1) . children (1) ;
poly1 . foreground = 3;
xlabel ( N o r m a l i z e d F r e q u e n c y > )
ylabel ( N o r m a l i z e d Power S p e c t r a l D e n s i t y > )
title ( QPSK Vs MSK Power S p e c t r a Comparison )
legend ([ Minimum S h i f t Keying , QPSK ])
xgrid (1)
// R e s u l t
// E n t e r t h e b i t r a t e i n b i t s p e r s e c o n d : 2
// E n t e r t h e Energy o f b i t : 1
Scilab code CF 7.31 Power spectra of M-ary PSK signals
1
2
// C a p t i o n : Power s p e c t r a o f Ma r y PSK s i g n a l s
// F i g u r e 7 . 3 1 Comparison o f Power S p e c t r a l D e n s i t i e s
o f Ma r y PSK s i g n a l s
80
81
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
rb = input ( E n t e r t h e b i t r a t e= ) ;
Eb = input ( E n t e r t h e e n e r g y o f t h e b i t= ) ;
f = 0:1/100: rb ;
Tb = 1/ rb ; // B i t d u r a t i o n
M = [2 ,4 ,8];
for j = 1: length ( M )
for i = 1: length ( f )
SB_PSK (j , i ) =2* Eb *( sinc_new ( f ( i ) * Tb * log2 ( M ( j ) ) )
^2) * log2 ( M ( j ) ) ;
end
end
a = gca () ;
plot2d ( f * Tb , SB_PSK (1 ,:) /(2* Eb ) )
plot2d ( f * Tb , SB_PSK (2 ,:) /(2* Eb ) ,2)
plot2d ( f * Tb , SB_PSK (3 ,:) /(2* Eb ) ,5)
xlabel ( N o r m a l i z e d F r e q u e n c y > )
ylabel ( N o r m a l i z e d Power S p e c t r a l D e n s i t y > )
title ( Power S p e c t r a o f Ma r y s i g n a l s f o r M = 2 , 4 , 8 )
legend ([ M=2 , M=4 , M=8 ])
xgrid (1)
// R e s u l t
// E n t e r t h e b i t r a t e i n b i t s p e r s e c o n d : 2
// E n t e r t h e Energy o f b i t : 1
Scilab code CF 7.41 Matched Filter output of rectangular pulse
1
2
3
4
5
6
7
8
9
10
11
// C a p t i o n : Matched F i l t e r o u t p u t o f r e c t a n g u l a r p u l s e
// F i g u r e 7 . 4 1
// Matched F i l t e r Output
clear ;
clc ;
T =4;
a =2;
t = 0: T ;
g = 2* ones (1 , T +1) ;
h = abs ( convol (g , g ) ) ;
for i = 1: length ( h )
82
83
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
if ( h ( i ) <0.01)
h ( i ) =0;
end
end
h = h-T;
t1 = 0: length ( h ) -1;
figure
a = gca () ;
a . data_bounds = [0 ,0;6 ,4];
plot2d (t ,g ,5)
xlabel ( t> )
ylabel ( g ( t )> )
title ( R e c t a n g u l a r p u l s e d u r a t i o n T = 4 , a =2 )
figure
plot2d ( t1 ,h ,6)
xlabel ( t> )
ylabel ( Matched F i l t e r o u t p u t )
title ( Output o f f i l t e r matched t o r e c t a n g u l a r p u l s e
g( t ) )
84
85
86
Chapter 8
Error-Control Coding
Scilab code Exa 8.1 Repetition Codes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// C a p t i o n : R e p e t i t i o n Codes
// Example8 . 1 : R e p e t i t i o n Codes
clear ;
clc ;
n =5; // b l o c k o f i d e n t i c a l n b i t s
k =1; // one b i t
m = 1; // b i t v a l u e = 1
I = eye (n -k ,n - k ) ; // I d e n t i t y m a t r i x
P = ones (1 ,n - k ) ; // c o e f f i c i e n t m a t r i x
H = [ I P ]; // p a r i t y c h e c k m a t r i x
G = [ P 1]; // g e n e r a t o r m a t r i x
x = m .* G ; // c o d e word
disp (G , g e n e r a t o r m a t r i x ) ;
disp (H , p a r i t y c h e c k m a t r i x ) ;
disp (x , c o d e word f o r b i n a r y one i n p u t ) ;
Scilab code Exa 8.2 Hamming Codes
1 // C a p t i o n : Hamming Codes
2 // Example8 . 2 : Hamming c o d e s
3 clear ;
4 clc ;
5 k = 4; // m e s s a g e b i t s l e n g t h
87
6
7
8
9
10
11
12
13
14
15
16
17
n = 7; // b l o c k l e n g t h
m = n - k ; // Number o f p a r i t y b i t s
I = eye (k , k ) ; // i d e n t i t y m a t r i x
disp (I , i d e n t i t y m a t r i x I k )
P =[1 ,1 ,0;0 ,1 ,1;1 ,1 ,1;1 ,0 ,1]; // c o e f f i c i e n t m a t r i x
disp (P , c o e f f i c i e n t m a t r i x P )
G = [ P I ]; // g e n e r a t o r m a t r i x
disp (G , g e n e r a t o r m a t r i x G )
H = [ eye (k -1 ,k -1) P ]; // p a r i t y c h e c k m a t r i x
disp (H , p a r i t y c h e c h k m a t r i x H )
// m e s s a g e b i t s
m =
[0 ,0 ,0 ,0;0 ,0 ,0 ,1;0 ,0 ,1 ,0;0 ,0 ,1 ,1;0 ,1 ,0 ,0;0 ,1 ,0 ,1;0 ,1 ,1 ,0;0 ,1 ,1 ,1;1
18 //
19 C = m * G ;
20 C = modulo (C ,2) ;
21 disp (C , Code words o f
( 7 , 4 ) Hamming c o d e )
// C a p t i o n : Hamming Codes R e v i s i t e d
// Example8 . 3 : ( 7 , 4 ) Hamming Code R e v i s i t e d
// m e s s a g e s e q u e n c e = [ 1 , 0 , 0 , 1 ]
//D = p o l y ( 0 ,D) ;
clc ;
D = poly (0 , D ) ;
g = 1+ D +0+ D ^3; // g e n e r a t o r p o l y n o m i a l
m = ( D ^3) *(1+0+0+ D ^3) ; // m e s s a g e s e q u e n c e
[r , q ] = pdiv (m , g ) ;
p = coeff ( r ) ;
disp (r , r e m a i n d e r i n p o l y n o m i a l form )
disp (p , P a r i t y b i t s a r e : )
G = [ g ; g * D ; g * D ^2; g * D ^3];
G = coeff ( G ) ;
disp (G , G )
G (3 ,:) = G (3 ,:) + G (1 ,:) ;
G (3 ,:) = modulo ( G (3 ,:) ,2) ;
88
18
19
20
21
22
23
24
25
26
27
1
2
3
4
5
6
7
8
9
10
11
12
13
// C a p t i o n : E n c o d e r f o r t h e ( 7 , 4 ) C y c l i c Hamming Code
// Example8 . 4 : E n c o d e r f o r t h e ( 7 , 4 ) C y c l i c hamming
code
// m e s s a g e s e q u e n c e = [ 1 , 0 , 0 , 1 ]
//D = p o l y ( 0 ,D) ;
D = poly (0 , D ) ;
g = 1+ D +0+ D ^3; // g e n e r a t o r p o l y n o m i a l
m = ( D ^3) *(1+0+0+ D ^3) ; // m e s s a g e s e q u e n c e
[r , q ] = pdiv (m , g ) ;
p = coeff ( r ) ;
disp (r , r e m a i n d e r i n p o l y n o m i a l form )
disp (p , P a r i t y b i t s a r e : )
disp ( T a b l e 8 . 3 C o n t e n t s o f t h e S h i f t R e g i s t e r i n
t h e E n c o d e r o f f i g 8 . 7 f o r Me ss age S e q u e n c e ( 1 0 0 1 )
)
disp (
)
14 disp ( S h i f t
Contents )
15 disp (
)
16 disp ( 1
17 disp ( 2
Input
1
0
89
Register
1 1 0 )
0 1 1 )
18
19
20
disp ( 3
disp ( 4
disp (
0
1
1 1 1 )
0 1 1 )
)
Scilab code Exa 8.5 Syndrome calculator for the(7,4) Cyclic Hamming
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// C a p t i o n : Syndrome c a l c u l a t o r f o r t h e ( 7 , 4 ) C y c l i c
Hamming Code
// Example8 . 5 : Syndrome c a l c u l a t o r
// m e s s a g e s e q u e n c e = [ 0 , 1 , 1 , 1 , 0 , 0 , 1 ]
clc ;
D = poly (0 , D ) ;
g = 1+ D +0+ D ^3; // g e n e r a t o r p o l y n o m i a l
C1 = 0+ D + D ^2+ D ^3+0+0+ D ^6; // e r r o r f r e e c o d e w o r d
C2 = 0+ D + D ^2+0+0+0+ D ^6; // m i d d l e b i t i s e r r o r
[ r1 , q1 ] = pdiv ( C1 , g ) ;
S1 = coeff ( r1 ) ;
S1 = modulo ( S1 ,2) ;
disp ( r1 , r e m a i n d e r i n p o l y n o m i a l form )
disp ( S1 , Syndrome b i t s f o r e r r o r f r e e c o d e w o r d a r e :
)
[ r2 , q2 ] = pdiv ( C2 , g ) ;
S2 = coeff ( r2 ) ;
S2 = modulo ( S2 ,2) ;
disp ( r2 , r e m a i n d e r i n p o l y n o m i a l form f o r e r r o r e d
codeword )
disp ( S2 , Syndrome b i t s f o r e r r o r e d c o d e w o r d a r e : )
Scilab code Exa 8.6 Reed-Solomon Codes
1 // C a p t i o n : ReedSolomon Codes
2 // Example8 . 6 : ReedSolomon Codes
3 // S i n g l e e r r o r c o r r e c t i n g RS c o d e w i t h a 2 b i t b y t e
4 clc ;
5 m =2; //mb i t symbol
90
6
7
8
9
10
11
12
13
14
k = 1^2; // number o f m e s s a g e b i t s
t =1; // s i n g l e b i t e r r o r c o r r e c t i o n
n = 2^ m -1; // c o d e word l e n g t h i n 2 b i t b y t e
p = n - k ; // p a r i t y b i t s l e n g t h i n 2 b i t b y t e
r = k / n ; // c o d e r a t e
disp (n , n )
disp (p , nk )
disp (r , Code r a t e : r = k / n = )
disp (2* t , I t can c o r r e c t any e r r o r u p t o = )
Scilab code Exa 8.7 Convolutional Encoding - Time domain approach
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// C a p t i o n : C o n v o l u t i o n a l E n c o d i n g Time domain
approach
// Example8 . 7 : C o n v o l u t i o n a l Code G e n e r a t i o n
// Time Domain Approach
close ;
clc ;
g1 = input ( E n t e r t h e i n p u t Top Adder S e q u e n c e := )
g2 = input ( E n t e r t h e i n p u t Bottom Adder S e q u e n c e :=
)
m = input ( E n t e r t h e m e s s a g e s e q u e n c e := )
x1 = round ( convol ( g1 , m ) ) ;
x2 = round ( convol ( g2 , m ) ) ;
x1 = modulo ( x1 ,2) ;
x2 = modulo ( x2 ,2) ;
N = length ( x1 ) ;
for i =1: length ( x1 )
x (i ,:) =[ x1 (N - i +1) , x2 (N - i +1) ];
end
x = string ( x )
disp ( x )
// R e s u l t
// E n t e r t h e i n p u t Top Adder S e q u e n c e : = [ 1 , 1 , 1 ]
// E n t e r t h e i n p u t Bottom Adder S e q u e n c e : = [ 1 , 0 , 1 ]
// E n t e r t h e m e s s a g e s e q u e n c e : = [ 1 , 1 , 0 , 0 , 1 ]
// x =
// ! 1 1 !
91
25
26
27
28
29
30
31
32
33
34
35
36
// !
// ! 1
// !
// ! 1
// !
// ! 1
// !
// ! 0
// !
// ! 0
// !
// ! 1
0
1
1
1
1
1
!
!
!
!
!
!
!
!
!
!
!
!
// C a p t i o n : C o n v o l u t i o n a l E n c o d i n g
T r a n s f o r m domain
approach
// Example8 . 8 : C o n v o l u t i o n a l c o d e T r a n s f o r m domain
approach
clc ;
D = poly (0 , D ) ;
g1D = 1+ D + D ^2; // g e n e r a t o r p o l y n o m i a l 1
g2D = 1+ D ^2; // g e n e r a t o r p o l y n o m i a l 2
mD = 1+0+0+ D ^3+ D ^4; // m e s s a g e s e q u e n c e p o l y n o m i a l
representation
x1D = g1D * mD ; // t o p o u t p u t p o l y n o m i a l
x2D = g2D * mD ; // bottom o u t p u t p o l y n o m i a l
x1 = coeff ( x1D ) ;
x2 = coeff ( x2D ) ;
disp ( modulo ( x1 ,2) , t o p o u t p u t s e q u e n c e )
disp ( modulo ( x2 ,2) , bottom o u t p u t s e q u e n c e )
// R e s u l t
// t o p o u t p u t s e q u e n c e
//
1.
1.
1.
1.
0.
0.
1.
//
// bottom o u t p u t s e q u e n c e
//
1.
0.
1.
1.
1.
1.
1.
92
Scilab code Exa 8.11 Fano metric for binary symmetric channel using convolutional code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// C a p t i o n : Fano m e t r i c f o r b i n a r y s y m m e t r i c c h a n n e l
using c o n v o l u t i o n a l code
// Example8 . 1 1 : C o n v o l u t i o n a l c o d e f o r b i n a r y
symmetric channel
clc ;
r = 1/2; // c o d e r a t e
n =2; // number o f b i t s
pe = 0.04; // t r a n s i t i o n p r o b i l i t y
p = 1 - pe ; // p r o b a b i l i t y o f c o r r e c t r e c e p t i o n
gama_1 = 2* log2 ( p ) +2*(1 - r ) ; // b r a n c h m e t r i c f o r
correct reception
gamma_2 = log2 ( pe * p ) +1; // b r a n c h m e t r i c f o r any one
correct recption
gamma_3 = 2* log2 ( pe ) +1; // b r a n c h m e t r i c f o r no
correct reception
disp ( gama_1 , b r a n c h m e t r i c f o r c o r r e c t r e c e p t i o n )
disp ( gamma_2 , b r a n c h m e t r i c f o r any one c o r r e c t
recption )
disp ( gamma_3 , b r a n c h m e t r i c f o r no c o r r e c t r e c e p t i o n
)
// b r a n c h m e t r i c f o r c o r r e c t r e c e p t i o n
//
0.8822126
// b r a n c h m e t r i c f o r any one c o r r e c t r e c p t i o n
//
3.7027499
// b r a n c h m e t r i c f o r no c o r r e c t r e c e p t i o n
//
8.2877124
93
Chapter 9
Spread-Spectrum Modulation
Scilab code Exa 9.1 PN sequence generation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// C a p t i o n : PN s e q u e n c e g e n e r a t i o n
// Example9 . 1 and F i g u r e 9 . 1 : Maximuml e n g t h s e q u e n c e
generator
// Program t o g e n e r a t e Maximum Length Pseudo N o i s e
Sequence
// P e r i o d o f PN S e q u e n c e N = 7
clc ;
// A s s i g n I n i t i a l v a l u e f o r PN g e n e r a t o r
x0 = 1;
x1 = 0;
x2 =0;
x3 =0;
N = input ( E n t e r t h e p e r i o d o f t h e s i g n a l )
for i =1: N
x3 = x2 ;
x2 = x1 ;
x1 = x0 ;
x0 = xor ( x1 , x3 ) ;
disp (i , The PN s e q u e n c e a t s t e p )
x = [ x1 x2 x3 ];
disp (x , x= )
end
m = [7 ,8 ,9 ,10 ,11 ,12 ,13 ,17 ,19];
94
22 N = 2^ m -1;
23 disp ( T a b l e 9 . 1 Range o f PN S e q u e n c e l e n g t h s )
24 disp (
25
26
27
28
29
)
disp ( Length o f s h i f t r e g i s t e r (m) )
disp ( m )
disp ( PN s e q u e n c e Length (N) )
disp ( N )
disp (
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
)
// RESULTEnter t h e p e r i o d o f t h e s i g n a l 7
// The PN s e q u e n c e a t s t e p
1.
// x=
1.
0.
0.
// The PN s e q u e n c e a t s t e p
2.
// x=
1.
1.
0.
// The PN s e q u e n c e a t s t e p
3.
// x=
1.
1.
1.
// The PN s e q u e n c e a t s t e p
4.
// x=
0.
1.
1.
// The PN s e q u e n c e a t s t e p
5.
// x=
1.
0.
1.
// The PN s e q u e n c e a t s t e p
6.
// x=
0.
1.
0.
// The PN s e q u e n c e a t s t e p
7.
// x=
0.
0.
1.
Scilab code Exa 9.2 Maximum length sequence property
1 // C a p t i o n : Maximum l e n g t h s e q u e n c e p r o p e r t y
2 // Example9 . 2 and F i g u r e 9 . 2 : Maximuml e n g t h s e q u e n c e
3 // P e r i o d o f PN S e q u e n c e N = 7
4 // P r o p e r i t e s o f maximuml e n g t h s e q u e n c e
5 clc ;
6 // A s s i g n I n i t i a l v a l u e f o r PN g e n e r a t o r
7 x0 = 1;
8 x1 = 0;
95
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
x2 =0;
x3 =0;
N = input ( E n t e r t h e p e r i o d o f t h e s i g n a l )
one_count = 0;
zero_count = 0;
for i =1: N
x3 = x2 ;
x2 = x1 ;
x1 = x0 ;
x0 = xor ( x1 , x3 ) ;
disp (i , The PN s e q u e n c e a t s t e p )
x = [ x1 x2 x3 ];
disp (x , x= )
C ( i ) = x3 ;
if ( C ( i ) ==1)
C_level ( i ) =1;
one_count = one_count +1;
elseif ( C ( i ) ==0)
C_level ( i ) = -1;
zero_count = zero_count +1;
end
end
disp (C , Output S e q u e n c e ) // r e f e r e q u a t i o n 9 . 4
disp ( C_level , Output S e q u e n c e l e v e l s ) // r e f e r
equation 9.5
if ( zero_count < one_count )
disp ( one_count , Number o f 1 s i n t h e g i v e n PN
sequence )
disp ( zero_count , Number o f 0 s i n t h e g i v e n PN
sequence )
disp ( P r o p e r t y 1 ( B a l a n c e p r o p e r t y ) i s s a t i s i f i e d
)
end
Rc_tuo = corr ( C_level , N ) ;
t = 1:2* length ( C_level ) ;
//
figure
a = gca () ;
96
43 a . x_location = o r i g i n ;
44 plot2d (t ,[ C_level ; C_level ])
45 xlabel (
t )
46 title ( Waveform o f maximuml e n g t h s e q u e n c e [ 0 0 1 1
1 0 1 0 0 1 1 1 0 1] )
47 //
48 figure
49 a = gca () ;
50 a . x_location = o r i g i n ;
51 a . y_location = o r i g i n ;
52 plot2d ([ - length ( Rc_tuo ) +1: -1 ,0: length ( Rc_tuo ) -1] ,[
53
tuo )
54 ylabel (
Rc ( t u o ) )
55 title ( A u t o c o r r e l a t i o n o f maximuml e n g t h s e q u e n c e )
Scilab code Exa 9.3 Processing gain, PN sequence length, Jamming margin in dB
1
2
3
4
5
6
7
8
9
10
11
12
13
// C a p t i o n : P r o c e s s i n g g a i n , PN s e q u e n c e l e n g t h ,
Jamming m a r g i n i n dB
// Example9 . 3 : P r o c e s s i n g g a i n and Jamming Margin
clear ;
clc ;
close ;
Tb = 4.095*10^ -3; // I n f o r m a t i o n b i t d u r a t i o n
Tc = 1*10^ -6; //PN c h i p d u r a t i o n
PG = Tb / Tc ; // P r o c e s s i n g g a i n
disp ( PG , The p r o c e s s i n g g a i n i s : )
N = PG ; //PN s e q u e n c e l e n g t h
m = log2 ( N +1) ; // f e e d b a c k s h i f t r e g i s t e r l e n g t h
disp (N , The r e q u i r e d PN s e q u e n c e i s : )
disp (m , The f e e d b a c k s h i f t r e g i s t e r l e n g t h : )
97
98
99
Scilab code Exa 9.4Example9.5 Slow and Fast Frequency hopping: FH/MFSK
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// C a p t i o n : D i r e c t S e q u e n c e S p r e a d C o h e r e n t BPSK
100
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// F i g u r e 9 . 4 : G e n e r a t i o n o f w a v e f o r m s i n DS/BPSK
spread spectrum t r a n s m i t t e r
clear ;
close ;
clc ;
t = 0:13;
N = 7;
wt = 0:0.01:1;
bt = [1* ones (1 , N ) -1* ones (1 , N ) ];
ct = [0 ,0 ,1 ,1 ,1 ,0 ,1 ,0 ,0 ,1 ,1 ,1 ,0 ,1];
ct_polar = [ -1 , -1 ,1 ,1 ,1 , -1 ,1 , -1 , -1 ,1 ,1 ,1 , -1 ,1];
mt = bt .* ct_polar ;
Carrier = 2* sin ( wt *2* %pi ) ;
st = [];
for i = 1: length ( mt )
st = [ st mt ( i ) * Carrier ];
end
//
figure
subplot (3 ,1 ,1)
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
a . data_bounds = [0 , -2;20 ,2];
plot2d2 (t , bt ,5)
xlabel (
27
28
29
30
31
32
33
34
t )
title ( Data b ( t ) )
subplot (3 ,1 ,2)
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
a . data_bounds = [0 , -2;20 ,2];
plot2d2 (t , ct_polar ,5)
xlabel (
t )
101
35
36
37
38
39
40
41
42
title ( S p r e a d i n g c o d e c ( t ) )
subplot (3 ,1 ,3)
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
a . data_bounds = [0 , -2;20 ,2];
plot2d2 (t , mt ,5)
xlabel (
43
44
45
46
47
48
49
50
51
52
t )
title ( P r o d u c t S i g n a l m( t ) )
//
figure
subplot (3 ,1 ,1)
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
a . data_bounds = [0 , -2;20 ,2];
plot2d2 (t , mt ,5)
xlabel (
53
54
55
56
57
58
59
60
t )
title ( P r o d u c t S i g n a l m( t ) )
subplot (3 ,1 ,2)
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
a . data_bounds = [0 , -2;20 ,2];
plot ( Carrier )
xlabel (
61
62
63
64
65
66
t )
title ( C a r r i e r S i g n a l )
subplot (3 ,1 ,3)
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
a . data_bounds = [0 , -2;20 ,2];
102
plot ( st )
xlabel (
t )
69 title ( DS/BPSK s i g n a l s ( t ) )
70 //
Scilab code ARC 1 Alaw
1
2
3
104
105
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// x = i n p u t v e c t o r
//Cx = Alaw c o m p r e s s o r o u t p u t
//Xmax = maximum o f i n p u t v e c t o r x
Xmax = max ( abs ( x ) ) ;
for i = 1: length ( x )
if ( x ( i ) / Xmax < = 1/ A )
Cx ( i ) = A * abs ( x ( i ) / Xmax ) ./(1+ log ( A ) ) ;
elseif ( x ( i ) / Xmax > 1/ A )
Cx ( i ) = (1+ log ( A * abs ( x ( i ) / Xmax ) ) ) ./(1+ log ( A ) ) ;
end
end
Cx = Cx / Xmax ; // n o r m a l i z a t i o n o f o u t p u t v e c t o r
Cx = Cx ;
endfunction
Scilab code ARC 2 auto correlation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Rxx ( n ) = Rxx ( n ) + x (n - k +1) * h ( k ) ;
22
end
23
end
24 end
25 disp ( Auto C o r r e l a t i o n R e s u l t i s )
26 Rxx
27 disp ( C e n t e r V a l u e i s t h e Maximum o f a u t o c o r r e l a t i o n
28
29
30
31
result )
[m , n ] = max ( Rxx )
disp ( P e r i o d o f t h e g i v e n s i g n a l u s i n g Auto
C o r r e l a t i o n Sequence )
n
endfunction
Scilab code ARC 3 Convolutional Coding
1 // C a p t i o n : C o n v o l u t i o n a l Code G e n e r a t i o n
2 // Time Domain Approach
3 close ;
4 clc ;
5 g1 = input ( E n t e r t h e i n p u t Top Adder S e q u e n c e := )
6 g2 = input ( E n t e r t h e i n p u t Bottom Adder S e q u e n c e :=
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
)
m = input ( E n t e r t h e m e s s a g e s e q u e n c e := )
x1 = round ( convol ( g1 , m ) ) ;
x2 = round ( convol ( g2 , m ) ) ;
x1 = modulo ( x1 ,2) ;
x2 = modulo ( x2 ,2) ;
N = length ( x1 ) ;
for i =1: length ( x1 )
x (i ,:) =[ x1 (N - i +1) , x2 (N - i +1) ];
end
x = string ( x )
// R e s u l t
// E n t e r t h e i n p u t Top Adder S e q u e n c e : = [ 1 , 1 , 1 ]
// E n t e r t h e i n p u t Bottom Adder S e q u e n c e : = [ 1 , 0 , 1 ]
// E n t e r t h e m e s s a g e s e q u e n c e : = [ 1 , 1 , 0 , 0 , 1 ]
// x =
107
22
23
24
25
26
27
28
29
30
31
32
33
34
// ! 1
// !
// ! 1
// !
// ! 1
// !
// ! 1
// !
// ! 0
// !
// ! 0
// !
// ! 1
1
0
1
1
1
1
1
!
!
!
!
!
!
!
!
!
!
!
!
!
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// C a p t i o n : Hamming E n c o d i n g
//H( 7 , 4 )
// Code Word Length = 7 , Me ss ag e Word l e n g t h = 4 ,
P a r i t y b i t s =3
// c l e a r ;
close ;
clc ;
// G e t t i n g M es sag e Word
m3 = input ( E n t e r t h e 1 b i t (MSb) o f m e s s a g e word ) ;
m2 = input ( E n t e r t h e 2 b i t o f m e s s a g e word ) ;
m1 = input ( E n t e r t h e 3 b i t o f m e s s a g e word ) ;
m0 = input ( E n t e r t h e 4 b i t ( LSb ) o f m e s s a g e word ) ;
// G e n e r a t i n g P a r i t y b i t s
for i = 1:(2^4)
b2 ( i ) = xor ( m0 ( i ) , xor ( m3 ( i ) , m1 ( i ) ) ) ;
b1 ( i ) = xor ( m1 ( i ) , xor ( m2 ( i ) , m3 ( i ) ) ) ;
b0 ( i ) = xor ( m0 ( i ) , xor ( m1 ( i ) , m2 ( i ) ) ) ;
m (i ,:) = [ m3 ( i ) m2 ( i ) m1 ( i ) m0 ( i ) ];
b (i ,:) = [ b2 ( i ) b1 ( i ) b0 ( i ) ];
end
C = [ b m ];
disp (
22
23
24
25
26
27
28
29
30
)
for i = 1:2^4
disp ( i )
disp ( m (i ,:) , Mes sa ge Word )
disp ( b (i ,:) , P a r i t y B i t s )
disp ( C (i ,:) , CodeWord )
disp (
);
disp (
);
end
disp (
31
32
33
)
// d i s p (m b C)
// R e s u l t
// E n t e r t h e 1 b i t (MSb) o f m e s s a g e word
1
2
3
109
[0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,1
34 // E n t e r t h e 2 b i t o f m e s s a g e word
[0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,1 ,1
35 // E n t e r t h e 3 b i t o f m e s s a g e word
[0 ,0 ,1 ,1 ,0 ,0 ,1 ,1 ,0 ,0 ,1 ,1 ,0 ,0 ,1
36 // E n t e r t h e 4 b i t ( LSb ) o f m e s s a g e
[0 ,1 ,0 ,1 ,0 ,1 ,0 ,1 ,0 ,1 ,0 ,1 ,0 ,1 ,0
,1];
,1];
,1];
word
,1];
function x = invmulaw (y , mu )
// Non l i n e a r Q u a n t i z a t i o n
// invmulaw : i n v e r s e mulaw n o n l i n e a r q u a n t i z a t i o n
// x = o u t p u t v e c t o r
// y = i n p u t v e c t o r ( u s i n g mulaw n o n l i n e a r
comression )
6
x = (((1+ mu ) .^( abs ( y ) ) -1) ./ mu )
7 endfunction
Scilab code ARC 6 PCM Encoding
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// C a p t i o n :PCM T r a n s m i s s i o n ( i n c l u d e s f u n c t i o n s :
u n i f o r m p c m . s c e , PCM encoding . s c e )
// T h i s program i s a s a m p l e program f o r P u l s e Code
Modulation t r a n s m i s s i o n
// s t e p 1 : The g i v e n a n a l o g s i g n a l c o n v e r t e d i n t o
quantized sample value
// s t e p 2 : Then t h e q u a n t i z e d s a m p l e v a l u e c o n v e r t e d
into binary value
clc ;
close ;
t = 0:0.001:1;
x = sin (2* %pi * t ) ;
L = 16;
// S t e p 1
[ SQNR , xq , en_code ] = uniform_pcm (x , L ) ;
// S t e p 2
c = PCM_Encoding (x ,L , en_code ) ;
a = gca () ;
a . x_location = o r i g i n ;
a . y_location = o r i g i n ;
plot2d2 ( t *2* %pi , x ) ;
plot2d2 ( t *2* %pi , xq ,5) ;
title ( Q u a n t i z a t i o n o f Sampled a n a l o g s i g n a l )
legend ([ Analog s i g n a l , Q u a n t i z e d S i g n a l ])
Scilab code ARC 8 sinc new
1 function [ y ]= sinc_new ( x )
2 i = find ( x ==0) ;
3 x ( i ) = 1;
// From LS : don t n e e d t h i s
warning i s o f f
4 y = sin ( %pi * x ) ./( %pi * x ) ;
5 y ( i ) = 1;
6 endfunction
111
i s /0
1
2
3
4
5
6
7
112