#!/usr/bin/python
##### Amplituda prilagoditve in prevajalne funkcije - S53MV 08.12.2018 #####

import math	#uporabljene funkcije

amin=-50	#minimalna amplituda [dB]
amax=0		#maksimalna amplituda [dB]
fmin=1e+8	#zacetna frekvenca [Hz]
fmax=2e+8	#koncna frekvenca [Hz]
q=200		#kvaliteta tuljav
zk=complex(50,0)	#karakteristicna impedanca [Ohm]

def sito(u,z,w,q):	#izracun prevajalne funkcije LC sita "bpf144"
	z=z+complex(0,w*1e-6)
	z=z+1/complex(0,w*1e-12)
	return [u,z]

print 'Racunanje odziva sita...'
xx=[]		#polja za risanje grafa
yy=[]
zz=[]
f=fmin		#zacetna frekvenca
k=(fmax-fmin)/800	#800 frekvencnih korakov
while f<=fmax:
	xx=xx+[f]	#polje frekvenc
	w=2*math.pi*f
	u=complex(2,0)	#vir (2V,zk)
	z=zk
	[u,z]=sito(u,z,w,q)
#	[u,z]=sito(u,z,w,q)
#	[u,z]=sito(u,z,w,q)
	g=20*math.log10(abs((z-zk)/(z+zk)))	#prilagoditev [dB]
	zz=zz+[g]	#polje prilagoditve
	a=20*math.log10(abs(u*zk/(z+zk)))	#prevajalna funkcija [dB]
	yy=yy+[a]	#polje prevajalne funkcije
	f=f+k

print 'Risanje matplotlib...'
import matplotlib.pyplot as plt		#risanje grafov funkcij
plt.plot(xx,zz,'r-')	#prilagoditev
plt.plot(xx,yy,'c-')	#prevajalna funkcija
plt.axis([fmin,fmax,amin,amax])
plt.title('Prevajalna funkcija in prilagoditev lestvicastega vezja')
plt.xlabel('Frekvenca [Hz]')
plt.ylabel('Amplituda [dB]')
plt.grid(True)
plt.show()

#konec programa

