print('This is a Theoretical example')
import math
#find code word length
#Variable Declaration
#Given data
bandwidth=4.2*10**6
fm=bandwidth
q=512 #Quantization levels
#q=2^v
#Calculation
v=math.log10(512)/math.log10(2)
#Result
print("The code word legth is = %.f bits" %v)
import math
#find The transmission Bandwidth
#Variable Declaration
#Given data
bandwidth=4.2*10**6
fm=bandwidth
q=512.0 #Quantization levels
v=9.0
#Calculation
bw=v*fm*10**-6
#Result
print("The transmission Bandwidth is = %.1f MHz" %bw)
import math
#find Final Bit rate
#Variable Declaration
#Given data
bandwidth=4.2*10**6
fm=bandwidth
q=512.0 #Quantization levels
v=9.0
#Calculation
fs=2*fm
r=v*fs #signaling rate
#Result
print("Final Bit rate =%.1f x 10^6 bits/sec" %(r/(10**6)))
import math
#find Output signal to noise ratio
#Variable Declaration
#Given data
bandwidth=4.2*10**6
fm=bandwidth
q=512 #Quantization levels
v=9.0
#Calculation
sn=4.8+6*v #noise in dB
print("Output signal to noise ratio is = %.1f dB" %sn)
import math
#find bits per sample
#Variable Declaration
fmax=4*10**3
xmax=3.8
snr=100
#Calculation
P=30*10**-3
v=(math.log10(((snr*xmax**2)/(3*P)))/(2*math.log10(2)))
#Result
print("Number of bits required per sample are = %.2f bits" %v)
import math
#Find Transmission Bandwith
#Variable Declaration
#Given data
fm=4*10**3 #Bandwidth of PCM
xmax=3.8
snr=100 #Signal to Noise Ratio
outputs=30.0
v=7.0
#Calculation
bw=outputs*v*fm
r=bw*2
bw=bw/10**3
#Result
print('Transmission Bandwith R = %.f kHz' %bw)
r=r/1000
print('Signaling rate R = %.f bits/sec' %r)
import math
#find sampling rate,number of bits,bit rate,bandwidht
#Variable Declaration
#Given data
emax=0.001
de=2*emax
fm=100.0
xmax=10.0
#Calculation
q=(2*xmax)/de
fs=2*fm
v=(math.log10(q))/math.log10(2)
v=math.ceil(v)
r=v*fs
#Result
print('1. sampling Frequncy = %.f Hz ' %fs)
print('2. No.of bits in PCM = %.f bits ' %v)
print('3. sampling rate = %.f bits per second ' %r)
r=r/2
print('4. Transmission Bandwidth = %.f Hz ' %r)
import math
#Find Bandwidth,Sampling Rate
#Variable Declaration
#Given data
fm=3.4*10**3
N=24
r=1.5*10**6
encoder=8
#Calculation
BW=N*fm
BW=BW/10**3
r1=r/N
fs=r1/encoder
#Result
print("i. Channel Bandwith is = %.2f kHz" %BW)
print("ii. Sampling frequency is = %.2f Hz or samples per second." %fs)
import math
#Find Signal Bandwidth,Noise Ratio
#Variable Declaration
#Given data
v=7
r=50*10**6
#Calculation
#fs=2*fm
fm=r/(2*v)
snr=1.8+(6*v);
fm=fm*10**-6
#Result
print('i. Maximum message Bandwidth is = %.2f MHz ' %fm)
print('ii. signal to quantization niose ration = %.2f dB ' %snr)
import math
#find i)bits per sample,ii)transmission rate
#Variable Declaration
#Given data
fm=3*10**3
q=16
#Calculation
v=(math.log10(q))/math.log10(2)
#Result
print('i) Bits in code word= %.f bits' %v)
fs=2*fm
r=v*fs
print('ii) it trasmission rate= %.f x 10^3 bits per second' %(r/(10**3)))
import math
#Find signal to noise ratio
#Variable Declaration
#Given data
fm=3.5*10**3
r=50*10**3
#Calculation
fs=2*fm
rms=0.2
xmax=2
v=r/fs #signaling rate r=v*fs
v=math.ceil(v)
P=(rms**2)/1
SNR=((3*P*2**(2*v))/(xmax**2))
SN=10*math.log10(SNR)
SN=math.ceil(SN)
#Result
print("signal to niose ratio =%.f dB" %SN)
import math
#Find i)noise ratio ii)bits
#Variable Declaration
#Given data
Am=3.0
v=10.0
#Calculation
SNR=1.8+6*v #noise ratio
SN=40
v=(SN-1.8)/6
#Result
print("i) Signal to Quantization noise ratio = %.1f dB" %SNR)
print("ii) Bits required to get signal to niose ratio of 40dB = %.f " %math.ceil(v))
import math
#Find Maximum frequency
#Variable Declaration
#Given data
v=7
SNR=1.8+6*v
r=56*10**3
#Calculation
fs=r/v #r=v*fs signaling rate
fm=fs/2 #Nquset rate
#Result
fm=fm/10**3
print("Maximum frequency is = %.f kHz" %fm)
import math
#Find Maximum Amplitude
#Variable Declaration
fm=3*10**3.0
#Calculation
Nyquistrate=2*fm #Nyquistrate
fs=5*Nyquistrate #Samplingfrquency
Ts=1/fs #Sampling Interval
de=0.25 #step size
fm1=2*10**3.0
Am=de/(2*math.pi*fm1*Ts)
#Result
print("Maximum Amplitude = %.4f Volts" %Am)
import math
#Find signaling rate
#Variable Declaration
fs1=8*10**3.0
de=31.25*10**-3
q=64.0
#Calculation
v=math.log(q,2)
r=v*fs1 #signaling rate
fm=3*10**3.0
A=1
fs2=(2*math.pi*fm*A)/(de)
#Result
r=r*10**-3
print("Signaling rate of PCM is = %.f kHz" %r)
fs2=fs2*10**-3
print("The signaling rate of DM is = %.2f kHz" %fs2)
import math
#Find signal to noise ratio
#Variable Declaration
fs=64.0*10**3 #frequency
fm=2.0*10**3 #Sinosoidal input signal sample
fM=4.0*10**3 #bandwidth
#Calculation
SNR=(3*fs**3)/(8*math.pi**2*fm**2*fM) #Signal to noise ratio
SNRO=10*math.log10(SNR)
#Result
print("Output signal to noise ratio = %.2f dB" %SNRO)
import math
#Find signal to Quatization noise ratio
#Variable Declaration
fs=8.0*10**3 #Sampling frequency
r=64.0*10**3 #Data Rate
N=8 #number of bits
#Calculation
SNR=(1.8+6*N) #signal to Quatization noise ratio
#Result
print("Signal to Quatization noise ratio of PCM system is = %.f dB" %SNR)
import math
#Find sampling rate,quantizing level
#Variable Declaration
r=36000
fm=3.2*10**3
#Calculation
fs=2*fm #Nquest rate
v=r/fs #r=v*fs signaling rate
v=math.floor(v)
q=2**v
fs1=r/v
#Result
print("Quantizing level q = %.f " %q)
fs1=fs1/1000
print("sampling rate fs = %.1f kHz " %fs1)
print("Number of binary digits = %.f " %v)
import math
#Find time duration of 1bit binary encoded signal
#Variable Declaration
fs=input("Enter the Nyquist rate of Signal fs(Hz)=")
q=input("Enter the Quantization levels q =")
#Calculation
v=math.log(q,2) #binary pulses transmitted per second
t=1.0/(v*fs) #Nyquist interval
#Result
print('Time duration of binary signal t = %.4f sec ' %t)
#output
#Enter the Nyquist rate fs(Hz)=3
#Enter the Quantization levels q =5
#time duration of 1bit binary signal
#t=0.1435589 sec
import math
#find signal to noise ratio
#Variable Declaration
SNR=40
SNRO=10**(SNR/10)
#SNR=3(q**2)/2, Signal to Quantization noise ratio
#Calculation
q=math.sqrt((2*SNRO)/3)
q=math.ceil(q)
v=math.log(q,2) #q=2**v Quantization levels
v=math.ceil(v)
snr=1.76+6.02*v #output Signal to Quantization noise ratio
#Result
print("Output Signal to Quantization noise ratio = %.1f dB" %snr)
import math
#Find Quantizing levels,minimum number of bits per sample
#Variable Declaration
SNRO=30.0
fmin=300.0
fmax=3300.0
fs=80000.0
#Calculation
#SNRO=1.76+20log10(q)
q=10**((SNRO-1.76)/20)
q=math.ceil(q)
v=math.log(q,2)
#Result
print('Quantizing levels required is =%.f' %q)
print('minimum number of bits per sample are=%.1f that is approximately 5' %v)
import math
#Find minimum required bandwidth
#Variable Declaration
SNRO=30.0 #Signal to quantisizing noise ratio
fmin=300.0 #min frequency band
fmax=3300.0 #max frequency band
fs=8000.0 #Sampling rate
v=5.0 #Minimum number of bits per sample
#Calculation
fPCM=(v*fs)/2
fPCM=fPCM/1000
#Result
print('minimum required bandwidth =%.f kHz' %fPCM)
import math
#Find Quantizing levels,minimum number of bits per sample and bandwidth
#Variable Declaration
SNRO=30.0 #Signal to quantisizing noise ratio
fmin=300.0 #min frequency band
fmax=3300.0 #max frequency band
fs=8000.0 #Sampling rate
#Calculation
q=10**((SNRO+10.1)/20)
q=math.ceil(q)
v=math.log(q,2)
v=math.ceil(v)
#Result
print('Quantizing levels need is =%.f' %q)
print('minimum number of bits per sample is =%.f' %v)
fPCM=(v*fs)/2
fPCM=fPCM/1000
print('minimum required bandwidth =%.f Khz' %fPCM)
import math
#determine the Maximum Amplitude,
#Variable Declaration
de=250*10**-3
wm=2*math.pi*1000
fs=3*10**3
Ts=1/fs
#Calculation
Amax=(de*3*fs*2)/(wm) #Amplitude
SNR=(3.0*((3*6*(10**3))**3))/((8*(math.pi**2)*(10**3)**3))
#Result
print('Maximum Amplitude= %.1f mV' %(Amax*(10**2)))
print('Signal to noise ratio = %.2f dB' %(10*math.log10(SNR)))
import math
#Find number of bits per sample
#Variable Declaration
SNR=20
averagepower=30*10**-3
SNRO=10**(SNR/10)
A=3.8
#SNRO=average signal power/Quatizing power
#de=(2*A)/L
#Calculation
L=math.sqrt((SNRO*A**2)/(3*averagepower))
n=math.log(L,2)
n=math.ceil(n)
#Result
print('Bits required per sample =%.f' %n)
import math
#Find Normalized power for quantization noise
#Variable Declaration
fm=3.0*10.0**3
v=8.0
VH=5.0
VL=-5.0
q=2**v
#Calculation
de=(VH-VL)/q
Nq=de**2/12.0 #quantization noise
#Result
print('Normalized power for quantization noise =%.2f x 10^-6 W' %(Nq*(10**6)))
import math
#Find bit transmission rate
#Variable Declaration
fm=3*10.0**3
v=8.0
VH=5.0
VL=-5
q=2**v
#Calculation
fs=2*fm #Nyquist rate
r=8*fs/1000
#Result
print('bit transmission rate %.f K bits/s' %r)
import math
#Find Signal to quantization noise ratio
#Variable Declaration
Nq=127.15*10**-6
Meansignal=2
#Calculation
P=Meansignal/1
SNR=P/Nq
SNRq=10*math.log10(SNR)
#Result
print('Signal to quantization noise ratio %.2f dB ' %SNRq)
import math
#Find i)SNR ii)output bit rate iii)no.of bits recorded
#Variable Declaration
N=16.0
v=16.0
fs=44.1*10**3
#Calculation
SNR=1.76+6*N
bitrate=2*v*fs
outputbitrate=2*bitrate*10**-6 #including addtional 100% over head
CD=outputbitrate*3600*10**-3
#Result
print('i)Out put signal noise ratio =%.2f dB' %SNR)
print('ii)output bit rate =%.3f Mbits/sec' %outputbitrate)
print('iii)no.of bits recorded in CD =%.2f gigabits' %CD)
import math
#Find output SNR
#Variable Declaration
fm=1*10.0**3
fs=32*10**3
#Calculation
FM=4*10**3 #Bandwidth
SNR=(3*fs**3)/(8*math.pi**2*fm**2*FM) #SNR
SNRO=10*math.log10(SNR)
#Result
print('Output signal to noise ratio %.2f dB' %SNRO)
import math
#Find step size
#Variable Declaration
fs=64000.0 #samples/sec
Amax=1.0 #Maximum signal amplitude
fm=3500.0 #Sample Rate
#Calculation
de=(2*math.pi*fm*Amax)/fs*1000
#Result
print('Step Size %.2f mV ' %de)
import math
#Find Quantizatio noise power
#Variable Declaration
fs=64000.0 #sample Rate
Amax=1.0 #Maximum signal Amplitude
fm=3500.0
#Calculation
de=343.6117*10**-3 #step size
Nq=de**2/3.0 #Quantizatio noise power
Nqd=Nq*(fm/fs)*1000
#Result
print('Quantizatio noise power %.3f mW' %Nqd)
import math
#Find SNR
#Variable Declaration
fs=64000.0
Amax=1.0
fm=3500.0
Nqd=2.1522995*10**-3
#Calculation
So=Amax**2/2
SNR=So/Nqd
SNRO=10*math.log10(SNR)
#Result
print('Output signal noise ratio dB %.3f dB' %SNRO)
import math
#Assuming signal is sampled at the rate 20% above Nyquist rate
#Variable Declaration
fm=4.5*10**6
q=1024.0
#Calculation
fs=1.2*2*fm #20% above Nyquist rate
v=math.log(q,2)
r=v*fs/10**6
#Result
print('no.of bits/sec = %.f M bit/sec' %r)
import math
#assume bandwidth of the singal is 4kHz
#Variable Declaration
fs=32000.0
A=2.0
fm=4000.0
BW=4000.0
#Calculation
de=(2*math.pi*fm*A)/fs
Nq=de**2/3
SNR=(3*fs**3)/(8*math.pi**2*fm**2*BW)
#Result
print('i)step size = %.3f M Volt' %de)
print('ii)noise power = %.3f W' %Nq)
print('iii)SNR= = %.3f ' %SNR)
import math
#assuming signal is sampled at the rate 20% above Nyquist rate
#Variable Declaration
fm=15*10**3
fs=1.2*2*fm
q=65536
#Calculation
v=math.log(q,2)
r=v*fs/1000
BW=r/2
#Result
print('i)signaling rate,= %.f K bits/sec ' %r)
print('ii)bandwidth BW min = %.f kHz ' %BW)
import math
#Find step size,noise power
#Variable Declaration
fs=64*10**3
fm=3500.0
A=1.0
#Calculation
de=(2*math.pi*fm*A)/fs #step size
Nq=(de**2/3)*(fm/fs) #Granular noise power
#Result
print('i)step size = %.3f Volts' %de)
print('ii)Nq= %.5f W' %Nq)
import math
#Find step Nr,Transmission Bandwidth, SNR
#Variable Declaration
fs=4 #kHz
N=12
#Calculation
Nr=2*fs #Nyquest rate
Bt=1.0/2*N*fs #Transmission Bandwidth
SNR=1.8+(6*N)
#Result
print('i)Nyquest rate = %.1f kHz' %Nr)
print('ii)Transmission Bandwidth = %.1f kHz' %Bt)
print('iii)SNR = %.1f dB' %SNR)
import math
#Find step size,noise power
#Variable Declaration
fm=3.5*10**3
fs=64*10**3
A=2.0
#Calculation
de=(2*math.pi*fm*A)/fs #step size
Nq=(de**2/3)*(fm/fs) #Granular noise power
#Result
print('i)step size = %.3f Volts' %de)
print('ii)Nq= %.1f X 10^-3 W' %(Nq*10**3))
import math
#Find number of binay pulse per word, Bit rate, Bandwidth
#Variable Declaration
W=4.5 * 10**6 #khz
Nr = 2 * W #Nyquist Rate
Q = 1024
fs=10.8
#Calculation
N = math.log(Q,2) #number of binay pulse per word
Br= N*fs #Bit rate
Bw= 1.0/2*Br #Bandwidth
#Result
print('i) Number of binay pulse per word = %.1f k bits/sec' %N)
print('ii) Bit rate = %.1f k bits/sec' %Br)
print('iii)Bandwidth= %.1f X 10^-3 kHz' %Bw)
import math
#Find number of binay pulse per word, Bit rate, Bandwidth
#Variable Declaration
W=15 #khz
Nr = 2*W #Nyquist Rate
Q = 65.53
fs=44.1 # Sampling rate kHz
N=16
#Calculation
Br= N*fs #Bit rate
Bw= 1.0/2*Br #Bandwidth
#Result
print('i) Number of binay pulse per word = %.3f bits' %N)
print('ii) Bit rate = %.1f k bits/sec' %Br)
print('iii)Bandwidth= %.1f kHz' %Bw)
import math
#Find Number of binay pulse per word
#Variable Declaration
W=3.3 #khz
fm = 1*10**3 #kHz
de = 250 #mV
fs=19.8 # Sampling rate kHz
#Calculation
A=(de*fs)/(2*math.pi*fm)
#Result
print('i) Number of binay pulse per word = %.3f' %A)
import math
#Find number of binay pulse per word, Signaling rate, Bandwidth
#Variable Declaration
W=3.3 #khz
fm = 3300 #Hz
Snq = 40 #dB
fs= 8000 # Samples/sec
#Calculation
N=math.ceil((Snq-4.8)/6) # Number of bits per word
Q=2**N #
r=N*fs #Signaling rate k bits/sec
Bw=1.0/2*r
#Result
print('i) Number of bits per word = %.1f' %N)
print('ii) Signaling rate rate = %.1f k bits/sec' %(r/10**3))
print('iii)Bandwidth= %.1f kHz' %(Bw/10**3))
import math
#Find the maximun frequency with 1 volt amplitude
#Variable Declaration
de=256*10**-3 #V
Ts = 10*10**-6 #kHz
fm = 10 #kHz
fs= 100 # kHz
A=1 #V
#Calculation
wm=(de/A*Ts)*10**7
#Result
print('i) maximun frequency = %.1f X 10^3 rad/sec' %wm)
import math
#Find the Signal to noise ratio
#Variable Declaration
Q=256
m=255
#Calculation
SNR=(3*Q**2)/(math.log((1+m),math.e))**2 #dB
Gc=m/(math.log(1+m)) #Companding gain
Gc=20*math.log(Gc,10)
#Result
print('i) The Signal to noise ratio= %.1f dB' %SNR)
print('ii) The Companding gain = %.1f dB' %Gc)
import math
#Find number of binay pulse per word, Signaling rate, Bandwidth
#Variable Declaration
fm=15*10**3 #kHz
Q=200
fs=2*fm
#Calculation
N=math.ceil(math.log(Q,2))
tr=N*fs #Transmission rate kbps
Bw=1.0/2*tr
#Result
print('i) Number of bits per Samples = %.1f' %N)
print('ii) Signaling rate = %.1f k bits/sec' %(tr/10**3))
print('iii)Bandwidth= %.1f kHz' %(Bw/10**3))
import math
#Find number of quantization level
#Variable Declaration
tr=36.0 #kbps
fm=3.4 #kHz
fs=8
#Calculation
N=math.ceil(tr/fs)
Q=2**N
#Result
print('i) number of quantization level = %.1f' %Q)
import math
#Find delta modulation
#Variable Declaration
A=1 #V
fm=3.4 #kHz
fs=20
#Calculation
de=1*2*math.pi*(fm/fs)
#Result
print('i) delta modulation = %.2f V' %de)
import math
#Find Signal to noise ratio
#Variable Declaration
W=3.5 #kHz
r=50.0 #kbps
Vpp=4 #V
fs=8
#Calculation
N=r/fs
SNR=4.8+(6.8*N)
#Result
print('i) Signal to noise ratio = %.2f V' %SNR)
import math
#Find Signal to noise ratio
#Variable Declaration
W=1 #MHz
fs1=3 #MHz
fs2=2.4 #MHz
Q=256
m=255
#Calculation
SNR=((3*Q**2)/(math.log((1+m),math.e))**2)
SNR1=63095.73 #SNR=38+10
Q1=math.sqrt((SNR1*((math.log(256,math.e))**2))/3)
N1=math.ceil(math.log(Q1,2))
r=N1*fs2
Bw=1.0/2*r
#Result
print('i) Number of bits/word = %.2f ' %N1)
print('ii) Bit rate = %.1f Mb/s' %r)
print('iii) Bandwidth = %.1f Mb/s' %Bw)