{ "metadata": { "name": "", "signature": "sha256:40e21dfb7d9d57e8191a618fb51fc2251d54b9cc53424ce90fa65f1447f5fe95" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Chapter 8 - Waveform coding techniques" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 2 - pg 386" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the transmission bandwidth and final bit rate\n", "import math\n", "from math import log10\n", "#given\n", "f_m = 4.2*10**6#bandwidth of television signal\n", "q = 512. #quantization levels\n", "\n", "#calculations\n", "#number of bits and quantization levels are related in binary PCM as q = 2^v \n", "#where v is code word length\n", "v = (log10(q)/log10(2));#code word length\n", "BW = v*f_m#transmission channel bandwidth which is greater than or equal to obtained value\n", "f_s = 2*f_m#sampling frequency which is greater than or equal to obtained value\n", "r = v*f_s#signaling rate of final bit rate\n", "SbyN_dB = 4.8 + 6*v#output signal to noise ratio which is less than or equal to obtained value\n", "\n", "#results\n", "print \"i. Code word length (bits) = \",v\n", "print \"ii. Transmission bandwidth (MHz) = \",round(BW/10**6,1)\n", "print \"iii.Final bit rate (bits/sec) = \",r\n", "print \"iv.Output signal to quantization noise ratio (dB) = \",SbyN_dB\n", "print \"Note:There is misprint in the question i.e TV signal bandwidth \"\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "i. Code word length (bits) = 9.0\n", "ii. Transmission bandwidth (MHz) = 37.8\n", "iii.Final bit rate (bits/sec) = 75600000.0\n", "iv.Output signal to quantization noise ratio (dB) = 58.8\n", "Note:There is misprint in the question i.e TV signal bandwidth \n" ] } ], "prompt_number": 1 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 3 - pg 387" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the number of bits required, bandwidth required and signalling rate\n", "import math\n", "#given\n", "f_m = 4.*10**3#maximum frequency or bans\n", "x_max = 3.8#maximun input signal\n", "P = 30.*10**-3#average power of signal\n", "SbyN_dB= 20.#signal to noise ratio in db\n", "\n", "#calculations\n", "SbyN = math.exp((SbyN_dB/10)*math.log(10));\n", "v = round((math.log10((SbyN*(x_max)**2)/(3*P))/math.log10(2.)/2.));#number of bits required per sample\n", "BW = 30*v*f_m#transmission channel bandwidth which is greater than or equal to obtained value\n", "r=BW*2#wkt signalling rate is two times the transmission bandwidth\n", "\n", "#resulta\n", "print \"i.Number of bits required (bits) = \",round(v,2)\n", "print \"ii.Bandwidth required for 30 PCM coders (kHz) = \",round(BW/1000.,0)\n", "print \"iii.Signalling rate (bitspersecond) = \",round(r/1000.,0)\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "i.Number of bits required (bits) = 7.0\n", "ii.Bandwidth required for 30 PCM coders (kHz) = 840.0\n", "iii.Signalling rate (bitspersecond) = 1680.0\n" ] } ], "prompt_number": 2 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 4 - pg 388" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the minumum sampling rate and minumum bit rate required\n", "import math\n", "#given\n", "e_max = .001#maximum quantization error\n", "x_max = 10.#maximum amplitude\n", "x_min = -10.#minumum amplitude\n", "f_m = 100.#bandwidth of ;input signal\n", "\n", "#calculations\n", "delta = 2*e_max#step size\n", "q = (2*x_max)/delta#quantization levels\n", "f_s = 2*f_m#sampling frequency\n", "v = math.ceil(math.log10(q) /math.log10(2));#number of bits in the PCM word\n", "r = v * f_s#bit rate required in the PCM signal which is greater than or equal to obtained value\n", "BW = .5*r#transmission channel bandwidth which is greater than or equal to obtained value\n", "\n", "#results\n", "print \"i.Minimum sampling rate required (Hz) = \",f_s\n", "print \"ii.Number of bits in each PCM word (bits) = \",round(v,2)\n", "print \"iii.Minimum bit rate required in the PCM signal (bits/sec) = \",round(r,0)\n", "print \"iv.Transmission bandwidth (Hz) = \",round(BW,0)\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "i.Minimum sampling rate required (Hz) = 200.0\n", "ii.Number of bits in each PCM word (bits) = 14.0\n", "iii.Minimum bit rate required in the PCM signal (bits/sec) = 2800.0\n", "iv.Transmission bandwidth (Hz) = 1400.0\n" ] } ], "prompt_number": 3 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 5 - pg 389" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the transmission bandwidth and sampling frequency\n", "#given\n", "f_m = 3.4*10**3#maximum frequency in the signal\n", "N =24.#number of voice signals\n", "r = 1.5*10**6#signaling rate\n", "v = 8.#bits of encoder\n", "\n", "#calculations\n", "BW = N * f_m#transmission bandwidth\n", "r_1 = r/N#bit rate for one channel\n", "f_s = r_1/v#sampling frquency\n", "\n", "#results\n", "print \"i.Transmission bandwidth (kHz) = \",BW/1000.\n", "print \"ii.Sampling frequency (Hz or samples per second) = \",f_s\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "i.Transmission bandwidth (kHz) = 81.6\n", "ii.Sampling frequency (Hz or samples per second) = 7812.5\n" ] } ], "prompt_number": 4 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 6 - pg 389" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the maximum message bandwidth and signal to noise ratio\n", "\n", "#given\n", "v = 7.#bits of encoder\n", "r = 50.*10**6#bit rate of the system\n", "\n", "#calculations\n", "f_m = r/(2*v)#maximum message bandwidth which is less than or equal to obtained value\n", "SbyN_dB = 1.8 + 6*v#signal to noise ratio in dB\n", "\n", "#results\n", "print \"i.Maximum message bandwidth (Hz) = \",round(f_m/10**6,2)\n", "print \"ii.Signal to noise ratio when modulating frquency is 1MHz applied (dB) = \",SbyN_dB\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "i.Maximum message bandwidth (Hz) = 3.57\n", "ii.Signal to noise ratio when modulating frquency is 1MHz applied (dB) = 43.8\n" ] } ], "prompt_number": 5 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 7 - pg 390" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the Minimum sampling rate and bit transmission rate\n", "import math\n", "from math import log\n", "#given\n", "f_m = 3*10**3#maximum frequency\n", "M = 16.#number of quantization levels\n", "q = M #number of quantization levels\n", "\n", "#calculations\n", "v = log(q)/log(2);#number of bits\n", "f_s = 2*f_m#sampling frequency or rate which is greater than or equal to obtained value\n", "r = v*f_s#bit transmission rate which is greater than or equal to obtained value\n", "\n", "#results\n", "print \"i.Number of bits in a codeword (bits) = \",v\n", "print \"ii.Minimum sampling rate (kHz) = \",f_s/1000.\n", "print \"iii.Bit transmission rate (bits/sec) = \",r\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "i.Number of bits in a codeword (bits) = 4.0\n", "ii.Minimum sampling rate (kHz) = 6.0\n", "iii.Bit transmission rate (bits/sec) = 24000.0\n" ] } ], "prompt_number": 6 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 8 - pg 391" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the signal to noise ratio\n", "import math\n", "from math import log10\n", "#given\n", "f_m = 3.5*10**3#maximum frequency\n", "r = 50*10**3#bit rate \n", "v_rms = .2#rms value of input signal\n", "R = 1#resistance\n", "x_max = 2#maximum peak voltage\n", "\n", "#calculations\n", "f_s = 2*f_m;#sampling frequency\n", "v = math.ceil(r/f_s);#number of bits\n", "P = v_rms**2 / R#Normalized signal power\n", "SbyN = ((3*P) * 2**(2*v)) /(x_max**2);#signal to noise ratio\n", "SbyN_dB = 10*log10(SbyN)#signal to noise ratio in dB\n", "\n", "#results\n", "print \"i.Signal to noise ratio in dB = \",round(SbyN_dB,0)\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "i.Signal to noise ratio in dB = 33.0\n" ] } ], "prompt_number": 7 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 10 - pg 392" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the signal to noise ratio and number of bits needed\n", "import math\n", "#given\n", "#x(t) = 3*cos(500*%pi*t)\n", "v = 10.#number of bits\n", "A_m = 3.#peak voltage\n", "SbyN_2 = 40.#signal to noise to noise ratio in second condition\n", "\n", "#calculations\n", "SbyN = 1.8 +6*v#signal to noise ratio in dB\n", "v_2 = (40 - 1.8)/6#number of bits needed for SbyN = 40\n", "\n", "#results\n", "print \"i.Signal to noise to ratio in dB \",SbyN\n", "print \"ii.Number of bits needed for noise ratio 40 (bits) = \",math.ceil(v_2)\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "i.Signal to noise to ratio in dB 61.8\n", "ii.Number of bits needed for noise ratio 40 (bits) = 7.0\n" ] } ], "prompt_number": 9 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 11 - pg 393" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the maximum frequency\n", "\n", "#given\n", "v = 7.#number of bits\n", "r = 56*10**3#signaling rate\n", "\n", "#calculations\n", "SbyN = 1.8 +6*v#signal to noise ratio in dB\n", "f_s = r/v#sampling frequency\n", "f_m = f_s/2#maximum frequency which is less than or equal to obtained value\n", "\n", "#results\n", "print \"Maximum frequency (Hz) = \",f_m\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Maximum frequency (Hz) = 4000.0\n" ] } ], "prompt_number": 11 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 13 - pg 404" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the maximum amplitude\n", "import math\n", "#given\n", "f_m = 3.*10**3#bandwidth or maximum frequency\n", "n = 5.#system operation times\n", "delta = 250.*10**-3#step size in volts\n", "f_m1 = 2.*10**3#given maximum frequency to calculate amplitude\n", "\n", "#calculations\n", "NR = 2 * f_m#nyquist rate\n", "f_s = n * NR#sampling frequency\n", "T_s = 1/f_s#sampling interval\n", "A_m =(delta/(2 * math.pi * f_m1* T_s))#Maximum amplitude\n", "\n", "#result\n", "print \"Maximum amplitude for 2KHz input sinusoid (V) = \",round(A_m,1)\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Maximum amplitude for 2KHz input sinusoid (V) = 0.6\n" ] } ], "prompt_number": 12 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 14 - pg 406" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the signalling rate\n", "import math\n", "from math import log\n", "#given\n", "f_s = 8*10**3#sampling rate\n", "q = 64.#quantization levels\n", "delta = 31.25#step size\n", "\n", "#calculations\n", "v = log(q)/log(2);#no fo bits in the PC\n", "f_s= (2*math.pi*3*10**3)/delta#signalling rate which should be greater than the obtaining value\n", "\n", "#results\n", "print \"Signalling rate (kHz) = \",round(f_s,2)\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Signalling rate (kHz) = 603.19\n" ] } ], "prompt_number": 13 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 15 - pg 407" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the signal to noise ratio\n", "import math\n", "#given\n", "f_m = 2.*10**3#maximum frequency\n", "f_s = 64.*10**3#sampling frequency\n", "f_M = 4.*10**3#cut off frequency of low pass filter\n", "\n", "#calculation\n", "SNR_0 = (3 * f_s**3) /(8 * math.pi**2 * f_m**2 * f_M);#signal to noise ratio of linear delta modulation system\n", "SNR_dB = 10*math.log10(SNR_0);#SNR in dB\n", "\n", "#result\n", "print \"Signal to noise ratio of linear delta modulation system (dB) = \",round(SNR_dB,2)\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Signal to noise ratio of linear delta modulation system (dB) = 27.94\n" ] } ], "prompt_number": 15 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 16 - pg 407" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the signal to noise ratio\n", "\n", "#given\n", "r = 64.*10**3#data rate\n", "f_s = 8.*10**3#sampling frequency\n", "N = 8.#number of samples\n", "\n", "#calcualtion\n", "SNR_q = 1.8 + 6*N#signal to noise ratio\n", "\n", "#result\n", "print \"Signla to noise ratio (dB) = \",SNR_q\n", "print \"The SNR of a DM system is 27.94dB which is too poor as \\ncompared to 49.8db of an 8 bit PCM system. Thus, for all\\n the simplicity of Dm,it cannot perform as well as an\\n 8 bit PCM\"\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Signla to noise ratio (dB) = 49.8\n", "The SNR of a DM system is 27.94dB which is too poor as \n", "compared to 49.8db of an 8 bit PCM system. Thus, for all\n", " the simplicity of Dm,it cannot perform as well as an\n", " 8 bit PCM\n" ] } ], "prompt_number": 16 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 17 - pg 413" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the sampling frequency and quantizing level\n", "import math\n", "#given\n", "r = 36000.#bit rate of a channel\n", "f_m = 3.2*10**3#maximum frequency\n", "\n", "#calculations\n", "f_s = 2*f_m#sampling frequency\n", "v = math.floor(r/f_s)#number of binary digits\n", "q = 2**v#quantizing level\n", "f_s2=r/v\n", "#results\n", "print \"i.Sampling frequency (Hz) = \",f_s\n", "print \"ii.Number of binary digits = \",round(v,1)\n", "print \"iii.Quantizing level = \",round(q,0)\n", "print \"iv. Sampling rate (Hz) = \",f_s2" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "i.Sampling frequency (Hz) = 6400.0\n", "ii.Number of binary digits = 5.0\n", "iii.Quantizing level = 32.0\n", "iv. Sampling rate (Hz) = 7200.0\n" ] } ], "prompt_number": 17 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 20 - pg 415" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the number of required levels and output signal to quantizing noise ratio\n", "import math\n", "from math import log, exp, sqrt\n", "#given\n", "SbyN_0dB = 40.#signal to noise ratio in dB\n", "SbyN_0 = exp((SbyN_0dB/10)*log(10))#signal to noise ratio\n", "q = sqrt((2. / 3) * (SbyN_0));#quantizing level\n", "v = math.ceil(log(q)/log(2.))#number of binary bits\n", "q_1 = 2**v#number of levels required \n", "SbyN_dB1 = 1.76 + 6.02*v#output signal-to-quantizing noise ratio in dB\n", "\n", "#results\n", "print \"Number of required levels = \",v\n", "print \"Output signal-to-quantizing noise ratio (dB) = \",SbyN_dB1\n", "print \"Note : In the textbook they took number of levels as approximation so we get change\\n in SbyN\"\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Number of required levels = 7.0\n", "Output signal-to-quantizing noise ratio (dB) = 43.9\n", "Note : In the textbook they took number of levels as approximation so we get change\n", " in SbyN\n" ] } ], "prompt_number": 18 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Example 21 - pg 416" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#calculate the minimum number of quantizing levels and bits, bandwidth required\n", "import math\n", "from math import log,exp,sqrt\n", "#given\n", "SbyN_dB = 30.#signal to noise ratio\n", "f_s = 8000.#sampling rate\n", "\n", "#calculations\n", "#for Sbyn_dB = 1.76 + 20*logq\n", "x1 = (1./ 20)*(SbyN_dB - 1.76)\n", "q1 = exp(x1*log(10))#quantizing level for first case\n", "v1 = math.ceil(log(q1)/log(2))# number of bits for first case\n", "f_PCM1 = (v1 / 2) * f_s#minimum required bandwidth for first case\n", "#for SbyN = 20logq - 10.1\n", "x2 = (1./20) * (SbyN_dB + 10.1)\n", "q2 = exp(x2*log(10))#quantizing level for second case\n", "v2 = math.ceil(log(q2)/log(2))# number of bits for second case\n", "f_PCM2 = (v2 / 2) * f_s#minimum required bandwidth for second case\n", "\n", "#results\n", "print \"i.a.Minimum number of quantizing levels for first case = \",round(q1,2)\n", "print \" b.Number of bits for first case = \",v1\n", "print \" c.Minimum system bandwidth required for first case (kHz) = \",f_PCM1/1000.\n", "print \"ii.a.Minimum number of quantizing levels for second case = \",round(q2,1)\n", "print \" b.Number of bits for second case = \",v2\n", "print \" c.Minimum system bandwidth required for second case (kHz) = \",f_PCM2/1000.\n", "print \"Note:In the text book they took approximation in\\nquantization levels and number bits\"\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "i.a.Minimum number of quantizing levels for first case = 25.82\n", " b.Number of bits for first case = 5.0\n", " c.Minimum system bandwidth required for first case (kHz) = 20.0\n", "ii.a.Minimum number of quantizing levels for second case = 101.2\n", " b.Number of bits for second case = 7.0\n", " c.Minimum system bandwidth required for second case (kHz) = 28.0\n", "Note:In the text book they took approximation in\n", "quantization levels and number bits\n" ] } ], "prompt_number": 19 } ], "metadata": {} } ] }