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
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
|
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chapter 5 Waveform Coding Techniques"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example5.1 page 187"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The average transmitted power is:\n",
"1.225e-05 W\n"
]
}
],
"source": [
"from __future__ import division\n",
"\n",
"sigma_N = 10**-6 #the noise variance\n",
"k = 7 # separation constant for on-off signaling\n",
"M = 2 # number of discrete amplitude levels for NRZ polar\n",
"print 'The average transmitted power is:'\n",
"P = (k**2)*(sigma_N)*((M**2)-1)/12#\n",
"print P,\"W\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example5.2 page 189"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nsYL2HSso7bhhY1fSIXTtOqynXfv1tOuwHrVfh0rXQ+l6KF2HlazDStZS1W4N1V3WUtl1LZVaQwVr\n2WCrWW+rqLIKOpV0pUtpNzqXdqVr+27079iTXp160qtzT3p36UHvLj3p1akvvToNY6vOW9Gncx+2\n6hL/d96Kzu07M3bsWMaOHVvsr4ZrRfLdUXwl/v9O/H8nIbE4uYDxbAe8lxheCOyTPdM2369bqyK5\nc6pyZ2Hlz9zaNLW2XLBN07ec0bL6rIbZLDPC2GLu9S++zW+XPJ89Z+hPbDe5XktuC8v8Zc23aS7L\nHt64jG1cPwqdIPzPDCt7OM6LoXbxf2Zcu2qUWBeqjtOq4zaqN443quNwdYyjmorKNfy38lpM1ViH\nKqxDmM+oDlfZlNBOJZv+q4QSlVCiUkrblVLSrmTj/y4qoX1JezqUtqd9SSkdStvTsaQ9pSWltG/X\nng4lHXJ2HUs60qm0Ex1Luyf6w//OpZ3p0r4Lndt3pnNp543/u3XoRrcO3ehU2snbNnLNUpoyimlm\ntkfWuKlmNqrRg5FOAI4ws7Pj8CnAPmb2vcQ8XkDhnHP1UMgmPCTpADN7Ng6MZvNsqMb0PjAwMTyQ\ncFexUX131DnnXP2kSSjOAv4mKfMYxyfAmQWK52VgmKQhhPdynwR8o0Dbcs45l0Jd2nrqCWBmKwoa\nkHQkm6rH3mpmvynk9pxzzuWXpoyiE3ACMIRNdyBmZlcUNjTnnHPNQbsU8zwMjCG097QqdqsLGVQ2\nSddIekPSa5IeTGSDIekSSXMkzZbU6t+6Lumrkl6XVCVpz6xpbepYQHhAM+7vHEkXFTuepiTpNkmL\nk1XZJfWRNEnSW5ImSmoT7XhLGijpqfjbmCnp/Di+zR0PSZ0kTZE0TdIsSb+J4+t/LMwsbwfMrG2e\nQnfAl4B2sf9K4MrYP5LQom17wh3P3Mx8rbUDdgaGA08BeybGt8VjURL3c0jc72nAiGLH1YT7fyAw\nCpiRGHc18JPYf1Hmt9LaO6A/sEfs7wa8CYxow8ejS/xfCkwGDmjIsUhzR/G8pKK+H9vMJplZdRyc\nAmwf+48BxplZhYWH9OYSHtprtcxstpm9VcOkNncsSDygaWYVQOYBzTbBzJ4BlmeNHgPcEfvvAI5t\n0qCKxMwWWXyZmpmtIjykux1t93isib0dCBdUy2nAsUiTUBwIvBJvV2bEbnodYm5sZwH/jv3bsnn1\n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\nAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f6de42cc750>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from __future__ import division\n",
"%matplotlib inline\n",
"from matplotlib.pyplot import plot,xlabel,ylabel,show,title,subplot\n",
"\n",
"\n",
"from math import log\n",
"def log2(x):\n",
" return log(x,2)\n",
"\n",
"\n",
"#Channel Capacity theorem\n",
"P_NoB_dB = range(-20,30) #Input signal-to-noise ratio P/NoB, decibels\n",
"P_NoB = [10**(xx/10) for xx in P_NoB_dB]\n",
"k =7# # for M-ary PCM system#\n",
"Rb_B = [log2(1+(12/k**2))*yy for yy in P_NoB]##bandwidth efficiency in bits/sec/Hz\n",
"C_B = [log2(1+xxx) for xxx in P_NoB]##ideal system according to Shannon's channel capacity theorem\n",
"#plot\n",
"plot(P_NoB_dB,C_B)\n",
"plot(P_NoB_dB,Rb_B)\n",
"xlabel('Input signal-to-noise ratio P/NoB, decibels')\n",
"ylabel('Bandwidth efficiency, Rb/B, bits per second per hertz')\n",
"title('Figure 5.9 Comparison of M-ary PCM with the ideal ssytem')\n",
"show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example5.3 page 192"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Channel width = 32000.00 Hz\n",
"Output Signal to noise ratio = 40.80 dB\n"
]
}
],
"source": [
"from __future__ import division\n",
"\n",
"#Channel Bandwidth B\n",
"n = 8 # no. of bits used to encode\n",
"W = 4000 # the message signal banwidth in Hz\n",
"B = n*W#\n",
"print 'Channel width = %.2f Hz'%B\n",
"SNRo = 6*n - 7.2#\n",
"print 'Output Signal to noise ratio = %.2f dB'%SNRo\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example 5.5 Page 207"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Maximum output signal-to-nosie = -5.17 dB for Delta Modualtion:\n"
]
}
],
"source": [
"from __future__ import division\n",
"from numpy import pi,log10\n",
"\n",
"a0 = 1 # The amplitude of sinusoidal signal\n",
"f0 = 4000 # the frequency of sinusoidal signal in Hz:\n",
"fs = 8000 # the sampling frequency in samples per seconds\n",
"Ts = 1/fs##Sampling interval\n",
"delta = 2*pi*f0*a0*Ts##Step size to avoid slope overload\n",
"Pmax = (a0**2)/2##maximum permissible output power\n",
"sigma_Q = (delta**2)/3##Quantization error or noise variance\n",
"W = f0##Maximum message bandwidth\n",
"N = W*Ts*sigma_Q# #Average output noise power\n",
"SNRo = Pmax/N# # Maximum output signal-to-noise ratio\n",
"SNRo_dB = 10*log10(SNRo)#\n",
"print 'Maximum output signal-to-nosie = %.2f dB for Delta Modualtion:'%SNRo_dB"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example 5.13(a) page 215"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fe0db41f650>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from __future__ import division\n",
"from numpy import arange,sign\n",
"from sympy import log\n",
"%matplotlib inline\n",
"from matplotlib.pyplot import plot,xlabel,ylabel,show,title,subplot\n",
"\n",
"#Caption:u-Law companding\n",
"#Figure5.13(a)Mulaw companding Nonlinear Quantization\n",
"#Plotting mulaw characteristics for different \n",
"#Values of mu\n",
"\n",
"x = arange(0,0.01+1,0.01)# #Normalized input\n",
"mu = [0,5,255]##different values of mu\n",
"def mulaw(x,mu):\n",
" \"\"\"\n",
" F(x) = sgn(x) ln(1 + μ|x|) / ln (1 + μ)\n",
" -1 <= x <= 1\n",
" \"\"\"\n",
" f=sign(x)*log(1+mu*abs(x))/log(1+mu)\n",
" return f\n",
"Cx=[]\n",
"\n",
"for i in range(0,len(mu)):\n",
" Cx.append(mulaw(x[i],mu[i]))\n",
" plot(Cx)\n",
"title('Compression Law: u-Law companding')\n",
"xlabel('Normalized Input |x|')\n",
"ylabel('Normalized Output |c(x)|')\n",
"show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example 5.13(b) page 216"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f35a637abd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from __future__ import division\n",
"from numpy import arange,sign,log\n",
"\n",
"%matplotlib inline\n",
"from matplotlib.pyplot import plot,xlabel,ylabel,show,title,subplot\n",
"\n",
"#Caption:A-law companding\n",
"#Plotting A-law characteristics for different \n",
"#Values of A\n",
"\n",
"x = arange(0,0.01+1,0.01)# #Normalized input\n",
"A = [1,2,87.56]##different values of A\n",
"\n",
"\n",
"def Alaw(x,a):\n",
" \"\"\"F(x) = sgn(x) A |x| / (1 + lnA) for 0 ≤|x| < 1/A\n",
" \n",
"= sgn(x) (1+ln A|x|) /(1 + lnA) for 1/A ≤|x| ≤ 1\n",
"\"\"\"\n",
" if abs(x) >= 0 and abs(x) < 1/a:\n",
" f = sign(x)*a*abs(x)/(1+log(a))\n",
" elif abs(x) >= 1/a and abs(x) <=1: \n",
" f = sign(x)*(1+log(a*abs(x))/(1+log(a)))\n",
" else:\n",
" f = 'Wrong parameters'\n",
" return f\n",
"Cx=[]\n",
"for i in range(0,len(A)):\n",
" #[Cx(i,:),Xmax(i)] = Alaw(x,A(i))#\n",
" Cx.append(Alaw(x[i],A[i]))\n",
" plot(Cx)\n",
" \n",
"title('Compression Law: A-Law companding')\n",
"xlabel('Normalized Input |x|')\n",
"ylabel('Normalized Output |c(x)|')\n",
"show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.9"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
|