You are on page 1of 120

Scilab Code for

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

by a grant from the National Mission on Education through ICT,


http://spoken-tutorial.org/NMEICT-Intro. This Text Book Companion and
Scilab codes written in it can be downlaoded from the website www.scilab.in

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

2 Fundamental Limit on Performance

3 Detection and Estimation

14

4 Sampling Process

27

5 Waveform Coding Techniques

31

6 Baseband Shaping for Data Transmission

39

7 Digital Modulation Techniques

59

8 Error-Control Coding

87

9 Spread-Spectrum Modulation

94

List of Scilab Codes


CF 1.2
Exa 2.1
Exa 2.2
Exa 2.3
Exa 2.4
Exa 2.5
Exa 2.6
Exa 2.7
Exa 3.1
Exa 3.2
Exa 3.3
Exa 3.4
Exa 3.6
CF 3.29
Exa 4.1
Exa 4.3
Exa 5.1
Exa 5.2

Digital Representation of Analog signal . . . . . . . .


Entropy of Binary Memoryless source . . . . . . . . .
Second order Extension of Discrete Memoryless Source
Entropy, Average length, Variance of Huffman Encoding
Entropy, Average length, Variance of Huffman Encoding
Binary Symmetric Channel . . . . . . . . . . . . . . .
Channel Capacity of a Binary Symmetric Channel . .
Significance of the Channel Coding theorem . . . . . .
Orthonormal basis for given set of signals . . . . . . .
M ARY Signaling . . . . . . . . . . . . . . . . . . . .
Matched Filter output for RF pulse . . . . . . . . . .
Matched Filter output for Noise-like signal . . . . . . .
Linear Predictor of Order one . . . . . . . . . . . . . .
Implementation of LMS Adaptive Filter algorithm . .
Bound on Aliasing error for Time-shifted sinc pulse . .
Equalizier to compensate Aperture effect . . . . . . . .
Average Transmitted Power for PCM . . . . . . . . .
Comparision of M-ary PCM with ideal system (Channel
Capacity Theorem) . . . . . . . . . . . . . . . . . . .
Exa 5.3
Signal-to-Quantization Noise Ratio of PCM . . . . . .
Exa 5.5
Output Signal-to-Noise ratio for Sinusoidal Modulation
CF 5.13a (a) u-Law companding . . . . . . . . . . . . . . . . . .
CF 5.13b (b) A-law companding . . . . . . . . . . . . . . . . . .
Exa 6.1
Bandwidth Requirements of the T1 carrier . . . . . . .
CF 6.1a (a) Nonreturn-to-zero unipolar format . . . . . . . . .
CF 6.1b (b) Nonreturn-to-zero polar format . . . . . . . . . . .
CF 6.1c
(c) Nonreturn-to-zero bipolar format . . . . . . . . . .
Exa 6.2
Duobinary Encoding . . . . . . . . . . . . . . . . . . .
4

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

Generation of bipolar output for duobinary coder . . .


Power Spectra of different binary data formats . . . .
(b) Ideal solution for zero ISI . . . . . . . . . . . . . .
(b) Practical solution: Raised Cosine . . . . . . . . .
Frequency response of duobinary conversion filter . . .
Frequency response of modified duobinary conversion
filter . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exa 7.1
QPSK Waveform . . . . . . . . . . . . . . . . . . . . .
CF 7.1
Waveform of Different Digital Modulation techniques .
Exa 7.2
MSK waveforms . . . . . . . . . . . . . . . . . . . . .
CF 7.2
Signal Space diagram for coherent BPSK . . . . . . .
Tab 7.3
Illustration the generation of DPSK signal . . . . . . .
CF 7.4
Signal Space diagram for coherent BFSK . . . . . . .
CF 7.6
Signal space diagram for coherent QPSK waveform . .
Tab 7.6
Bandwidth efficiency of M ary PSK signals . . . . . .
Tab 7.7
Bandwidth efficiency of M ary FSK signals . . . . . .
CF 7.29 Power Spectra of BPSK and BFSK signals . . . . . . .
CF 7.30 Power Spectra of QPSK and MSK signals . . . . . . .
CF 7.31 Power spectra of M-ary PSK signals . . . . . . . . . .
CF 7.41 Matched Filter output of rectangular pulse . . . . . .
Exa 8.1
Repetition Codes . . . . . . . . . . . . . . . . . . . . .
Exa 8.2
Hamming Codes . . . . . . . . . . . . . . . . . . . . .
Exa 8.3
Hamming Codes Revisited . . . . . . . . . . . . . . . .
Exa 8.4
Encoder for the (7,4) Cyclic Hamming Code . . . . . .
Exa 8.5
Syndrome calculator for the(7,4) Cyclic Hamming Code
Exa 8.6
Reed-Solomon Codes . . . . . . . . . . . . . . . . . . .
Exa 8.7
Convolutional Encoding - Time domain approach . . .
Exa 8.8
Convolutional Encoding Transform domain approach
Exa 8.11 Fano metric for binary symmetric channel using convolutional code . . . . . . . . . . . . . . . . . . . . . . .
Exa 9.1
PN sequence generation . . . . . . . . . . . . . . . . .
Exa 9.2
Maximum length sequence property . . . . . . . . . .
Exa 9.3
Processing gain, PN sequence length, Jamming margin
in dB . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exa 9.4Example9.5
Slow and Fast Frequency hopping: FH/MFSK . . . .
Fig 9.4Figure9.6
Direct Sequence Spread Coherent BPSK . . . . . . . .
ARC 1
Alaw . . . . . . . . . . . . . . . . . . . . . . . . . . .
ARC 2
auto correlation . . . . . . . . . . . . . . . . . . . . .
5

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

Figure 1.1: Figure1.2a

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 )

Figure 1.2: Figure1.2b

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

Figure 2.1: Example2.1

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 ) )

Scilab code Exa 2.3 Entropy,Average length, Variance of Huffman Encoding


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 : 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

Figure 2.2: Example2.6

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

Figure 2.3: Example2.7

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

Figure 3.1: Example3.1a


59
60
61
62
63
64
65
66
67
68
69

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

Figure 3.2: Example3.1b

17

Scilab code Exa 3.2 M ARY Signaling


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

// 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

Figure 3.3: Example3.2


T)<x1 <0| 0<x1<a . s q r t (T) | a . s q r t (T)<x1 )
Scilab code Exa 3.3 Matched Filter output for RF pulse
1
2
3
4
5
6
7
8

// 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

phit = sqrt (2/ T ) * cos (2* %pi * fc * t1 ) ;


hopt = phit ;
phiot = convol ( phit , hopt ) ;
phiot = phiot / max ( phiot ) ;
t2 = 0:0.01:2* T ;
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 ( t1 , phit ) ;
xlabel (

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

Figure 3.4: Example3.3

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

Figure 3.5: Example3.4

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

// I m p l e m e n t a t i o n o f LMS ADAPTIVE FILTER


// For n o i s e c a n c e l l a t i o n a p p l i c a t i o n
clear ;
clc ;
close ;
order = 18;
t =0:0.01:1;
x = sin (2* %pi *5* t ) ;
noise = rand (1 , length ( x ) ) ;
x_n = x + noise ;
ref_noise = noise * rand (10) ;
w = zeros ( order ,1) ;
mu = 0.01*( sum ( x .^2) / length ( x ) ) ;
N = length ( x ) ;
for k =1:1010
for i = 1: N - order -1
buffer = ref_noise ( i : i + order -1) ;
desired ( i ) = x_n ( i ) - buffer * w ;
24

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

Figure 3.6: Figure3.29

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

Figure 4.1: Example4.1


21
22
23
24
25
26
27
28

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

Figure 4.2: Example4.3

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

Figure 5.1: Example5.2

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

Scilab code CF 5.13a (a) u-Law companding


1
2
3
4
5
6
7
8
9
10
11
12
13
14

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

Figure 5.2: Figure5.13a

37

Figure 5.3: Figure5.13b


9
[ Cx (i ,:) , Xmax ( i ) ] = Alaw (x , A ( i ) ) ;
10 end
11 plot2d ( x / Xmax (1) , Cx (1 ,:) ,2)
12 plot2d ( x / Xmax (2) , Cx (2 ,:) ,4)
13 plot2d ( x / Xmax (3) , Cx (3 ,:) ,6)
14 xtitle ( C o m p r e s s i o n Law : ALaw 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 ) | )
;
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

Figure 6.1: Figure6.1a

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

Figure 6.2: Figure6.1b

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

Figure 6.3: Figure6.1c

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

a (1) = xor (1 , b (1) ) ;


if ( a (1) ==1)
a_volts (1) = 1;
end
for k =2: length ( b )
a ( k ) = xor ( a (k -1) ,b ( k ) ) ;
if ( a ( k ) ==1)
a_volts ( k ) =1;
else
a_volts ( k ) = -1;
end
end
a = a ;
a_volts = a_volts ;
disp (a , P r e c o d e r o u t p u t i n b i n a r y form : )
disp ( a_volts , P r e c o d e r o u t p u t i n v o l t s : )
// 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
c (1) = 1+ a_volts (1) ;
for k =2: length ( a )
c ( k ) = a_volts (k -1) + a_volts ( k ) ;
end
c = c ;
disp (c , 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 : )
// D u o b i n a r y d e c o d e r o u t p u t by a p p l y i n g d e c i s i o n
rule
for k =1: length ( c )
if ( abs ( c ( k ) ) >1)
b_r ( k ) = 0;
else
b_r ( k ) = 1;
end
end
b_r = b_r ;
disp ( b_r , 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 d e t e c t o r
oupupt : )
// R e s u l t
// P r e c o d e r o u t p u t i n b i n a r y form :
//
46

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.

Scilab code CF 6.4 Power Spectra of different binary data formats


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 : 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

Sxxf_NRZ_UP ( i ) = ( a ^2) *( Tb /4) *(( sinc_new ( f ( i ) * Tb


) ) ^2) ;
end
Sxxf_Manch ( i ) = ( a ^2) * Tb *( sinc_new ( f ( i ) * Tb /2) ^2) *(
sin ( %pi * f ( i ) * Tb /2) ^2) ;
end
// P l o t t i n g
a = gca () ;
plot2d (f , Sxxf_NRZ_P )
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 .
plot2d (f , Sxxf_NRZ_BP ,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 .
plot2d (f , Sxxf_NRZ_UP ,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 .
plot2d (f , Sxxf_Manch ,9)
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 Tb> )
ylabel ( Sxx ( f )> )
title ( Power S p e c t r 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
Codinig Techniques )
xgrid (1)
legend ([ NRZ P o l a r Format , NRZ B i p o l a r f o r m a t , NRZ
U n i p o l a r f o r m a t , M a n c h e s t e r f o r m a t ]) ;
// R e s u l t
// E n t e r t h e A m p l i t u d e v a l u e : 1
// E n t e r t h e b i t r a t e : 1
Scilab code CF 6.6b (b) Ideal solution for zero ISI

// 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

Figure 6.4: Figure6.4

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

Figure 6.5: Figure6.6

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

Scilab code CF 6.9 Frequency response of duobinary conversion filter


1
2
3
4
5
6
7
8
9
10

// 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

Figure 6.6: Figure6.7

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

Figure 6.7: Figure6.9

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

Figure 6.8: Figure6.15

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

Figure 7.1: Example7.1


54
55

// 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

Figure 7.2: Figure7.1a

64

Figure 7.3: Figure7.1b

65

Figure 7.4: Figure7.1c

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

Figure 7.5: Example7.2

69

Figure 7.6: Figure7.2

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

Figure 7.7: Figure 7.4

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

Figure 7.8: Figure7.6

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

Figure 7.9: Figure7.12

)
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

// C a p t i o n : Power S p e c t r a o f BPSK and BFSK s i g n a l s


// F i g u r e 7 . 2 9 : Comparison o f Power S p e c t r a l D e n s i t i e s
o f BPSK
// and BFSK
clc ;
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:8/ rb ;
Tb = 1/ rb ; // B i t d u r a t i o n
for i = 1: length ( f )
if ( f ( i ) ==(1/(2* Tb ) ) )
SB_FSK ( i ) = Eb /(2* Tb ) ;
else
SB_FSK ( i ) = (8* Eb *( cos ( %pi * f ( i ) * Tb ) ^2) ) /(( %pi
^2) *(((4*( Tb ^2) *( f ( i ) ^2) ) -1) ^2) ) ;
end
SB_PSK ( i ) =2* Eb *( sinc_new ( f ( i ) * Tb ) ^2) ;
end
a = gca () ;
plot ( f * Tb , SB_FSK /(2* Eb ) )
plot ( f * Tb , SB_PSK /(2* Eb ) )
poly1 = a . children (1) . children (1) ;
poly1 . foreground = 6;
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 ( PSK Vs FSK Power S p e c t r a Comparison )
legend ([ F r e q u e n c y S h i f t Keying , Phase S h i f t Keying
])
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.30 Power Spectra of QPSK and MSK signals.

1
2

// C a p t i o n : Power S p e c t r a o f QPSK and MSK s i g n a l s


// F i g u r e 7 . 3 0 : Comparison o f QPSK and MSK Power
78

Figure 7.10: Figure7.29

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

Figure 7.11: Figure7.30

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

Figure 7.12: Figure7.31

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

Figure 7.13: Figure7.41a

85

Figure 7.14: Figure7.41b

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 )

Scilab code Exa 8.3 Hamming Codes Revisited


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

// 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

G (4 ,:) = G (1 ,:) + G (2 ,:) + G (4 ,:) ;


G (4 ,:) = modulo ( G (4 ,:) ,2) ;
disp (G , G e n e r a t o r M a t r i x G = )
h = 1+ D ^ -1+ D ^ -2+ D ^ -4;
H_D = [ D ^4* h ; D ^5* h ; D ^6* h ];
H_num = numer ( H_D ) ;
H = coeff ( H_num ) ;
H (1 ,:) = H (1 ,:) + H (3 ,:) ;
H (1 ,:) = modulo ( H (1 ,:) ,2) ;
disp (H , P a r t i y Check m a t r i x H = )
Scilab code Exa 8.4 Encoder for the (7,4) Cyclic Hamming Code

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

!
!
!
!
!
!
!
!
!
!
!
!

Scilab code Exa 8.8 Convolutional Encoding Transform domain approach


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 : 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

Rc_tuo ( $ : -1:2) , Rc_tuo ] ,5)


xlabel (

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

Figure 9.1: Example9.2a

98

Figure 9.2: Example9.2b

99

14 Eb_No = 10; // Energy t o n o i s e d e n s i t y r a t i o


15 J_P = PG / Eb_No ; // Jamming Margin
16 disp (10* log10 ( J_P ) , Jamming Margin i n dB : )
17 // R e s u l t
18 // The p r o c e s s i n g g a i n i s :
4095.
19 // The r e q u i r e d PN s e q u e n c e i s : 4 0 9 5 .
20 // 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 : 1 2 .
21 // Jamming Margin i n dB : 2 6 . 1 2 2 5 3 9

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 : Slow and F a s t F r e q u e n c y h o p p i n g : FH/MFSK


// Example9 . 4 and Example9 . 5 : P a r a m e t e r s o f FH/MFSK
signal
// Slow and F a s t F r e q u e n c y Hopping
clear ;
close ;
clc ;
K =2; // number o f b i t s p e r symbol
M = 2^ K ; // Number o f MFSK t o n e s
N = 2^ M -1; // P e r i o d o f t h e PN s e q u e n c e
k = 3; // l e n g t h o f PN s e q u e n c e p e r hop
disp (K , number o f b i t s p e r symbol K = )
disp (M , Number o f MFSK t o n e s M= )
disp (N , P e r i o d o f t h e PN s e q u e n c e N = )
disp (k , l e n g t h o f PN s e q u e n c e p e r hop k = )
disp (2^ k , T o t a l number o f f r e q u e n c y h o p s = )
// R e s u l t
// number o f b i t s p e r symbol K = 2 .
// Number o f MFSK t o n e s M = 4 .
// P e r i o d o f t h e PN s e q u e n c e N = 1 5 .
// l e n g t h o f PN s e q u e n c e p e r hop k = 3 .
// T o t a l number o f f r e q u e n c y h o p s = 8 .
Scilab code Fig 9.4Figure9.6 Direct Sequence Spread Coherent BPSK

// 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

Figure 9.3: Figure9.6a


67
68

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

function [ Cx , Xmax ] = Alaw (x , A )


// Non l i n e a r Q u a n t i z a t i o n
//Alaw : Alaw n o n l i n e a r q u a n t i z a t i o n
103

Figure 9.4: Figure9.6b


Figure9.6b

104

Figure 9.5: Figure10.12

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

function [ Rxx ] = auto_correlation ( x )


// A u t o c o r r e l a t i o n o f a g i v e n I n p u t S e q u e n c e
// F i n d i n g o u t t h e p e r i o d o f t h e s i g n a l u s i n g
autocorrelation technique
L = length ( x ) ;
h = zeros (1 , L ) ;
for i = 1: L
h (L - i +1) = x ( i ) ;
end
N = 2* L -1;
Rxx = zeros (1 , N ) ;
for i = L +1: N
h ( i ) = 0;
end
for i = L +1: N
x ( i ) = 0;
end
for n = 1: N
for k = 1: N
if ( n >= k )
106

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

!
!
!
!
!
!
!
!
!
!
!
!
!

Scilab code ARC 4 Hamming Distance


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 : Hamming Weight and Hamming D i s t a n c e


//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 Code Words
code1 = input ( E n t e r t h e f i r s t c o d e word ) ;
code2 = input ( E n t e r t h e s e c o n d c o d e word ) ;
Hamming_Distance = 0;
for i = 1: length ( code1 )
Hamming_Distance = Hamming_Distance + xor ( code1 ( i ) ,
code2 ( i ) ) ;
end
disp ( Hamming_Distance , Hamming D i s t a n c e )
// R e s u l t
// E n t e r t h e f i r s t c o d e word [ 0 , 1 , 1 , 1 , 0 , 0 , 1 ]
// E n t e r t h e s e c o n d c o d e word [ 1 , 1 , 0 , 0 , 1 , 0 , 1 ]
// Hamming D i s t a n c e
4.
Scilab code ARC 5 Hamming Encode
108

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];

Scilab code ARC 5 invmulaw


1
2
3
4
5

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

function [ c ] = PCM_Encoding (x ,L , en_code )


// E n c o d i n g : C o n v e r t i n g Q u a n t i z e d d e c i m a l s a m p l e
values in to binary
// x = i n p u t s e q u e n c e
//L = number o f q u n a t i z a t i o n l e v e l s
// e n c o d e = n o r m a l i z e d i n p u t s e q u e n c e
n = log2 ( L ) ;
c = zeros ( length ( x ) ,n ) ;
for i = 1: length ( x )
for j = n : -1:0
if ( fix ( en_code ( i ) /(2^ j ) ) ==1)
c (i ,( n - j ) ) =1;
en_code ( i ) = en_code ( i ) -2^ j ;
end
end
end
disp ( c )
110

Scilab code ARC 7 PCM Transmission


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 :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

Scilab code ARC 9 uniform pcm


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

function [ SQNR , xq , en_code ] = uniform_pcm (x , L )


// x = i n p u t s e q u e n c e
//L = number o f q u n a t i z a t i o n l e v e l s
xmax = max ( abs ( x ) ) ;
xq = x / xmax ;
en_code = xq ;
d = 2/ L ;
q = d *[0: L -1];
q = q -(( L -1) /2) * d ;
for i = 1: L
xq ( find ((( q ( i ) -d /2) <= xq ) &( xq <=( q ( i ) + d /2) ) ) ) =...
q ( i ) .* ones (1 , length ( find ((( q ( i ) -d /2) <= xq ) &( xq <=(
q ( i ) + d /2) ) ) ) ) ;
en_code ( find ( xq == q ( i ) ) ) = (i -1) .* ones (1 , length (
find ( xq == q ( i ) ) ) ) ;
end
xq = xq * xmax ;
SQNR = 20* log10 ( norm ( x ) / norm (x - xq ) ) ;
endfunction
Scilab code ARC 10 xor

1
2
3
4
5
6
7

function [ value ] = xor (A , B )


if ( A == B )
value = 0;
else
value = 1;
end
endfunction

112

You might also like