1. Сергиенко А. Б. Цифровая обработка сигналов: Учебник для вузов. – С-Пб.: Питер, 2004.
2. Расчет фильтра Чебышёва [Электронный ресурс] / http:// dsplib.ru//– Режим доступа– http://www.dsplib.ru/content/filters/ch4/ch4.html - свободный.
3. Преобразование ФНЧ-ПВ и ФНЧ-РФ [Электронный ресурс] / http:// dsplib.ru//– Режим доступа– http://www.dsplib.ru/content/filters/ch8/ch8.html - свободный.
Приложение А
#для суммы синусоид
importmatplotlib.pyplotasplt
importnumpy as np
importpylab
a=(1,-5.5480818959417007665,14.832765013008965583,-24.401212887072047003,26.877615171722826134,-20.239082032698278678,10.203720545190539504,-3.1654121040568537528,0.47352146693640685484)
b=(0.68813152878453683225,-4.2089191339831740913,12.406385625670294764,-22.467975325901266009,27.198587887949074885,-22.467975325901266009,12.406385625670294764,-4.2089191339831740913,0.68813152878453683225)
F1=1000
F2=1200
F3=2000
fd=11025
w1=2*np.pi*F1
w2=2*np.pi*F2
w3=2*np.pi*F3
n = np.arange(0,fd,1)
t=n/fd
s1 = np.sin(w1*t)
s2 = np.sin(w2*t)
s3 = np.sin(w3*t)
s=s1+s2+s3
Y=np.zeros(len(s))
N=4
x=np.zeros(N+1)
y=np.zeros(len(s))
for m in range (0,int(len(s))):
for k in range(0,N+1):
x[k]=b[k]*s[k-m]
if m>5:
for k in range(1,N+1):
y[k]=a[k]*y[k-m]
q=sum(x)
e=sum(y)
Y[m]=q-e
else:
q=sum(x)
e=0
Y[m]=q-e
Sp=np.fft.fft(Y)
pylab.xlim(0,3000)
plt.plot(abs(Sp))
plt.show()
#длятреугольныхимпульсов
|
|
importmatplotlib.pyplot as plt
importnumpy as np
a=(1,-5.5480818959417007665,14.832765013008965583,-24.401212887072047003,26.877615171722826134,-20.239082032698278678,10.203720545190539504,-3.1654121040568537528,0.47352146693640685484)
b=(0.68813152878453683225,-4.2089191339831740913,12.406385625670294764,-22.467975325901266009,27.198587887949074885,-22.467975325901266009,12.406385625670294764,-4.2089191339831740913,0.68813152878453683225)
u=np.linspace(0,1,5)
u=u[1]-u[0]
Q=np.append(np.linspace(0+u,1,5,np.linspace(1-u,0,5))
Q2=1102*list(Q)
Y=np.zeros(len(Q2))
N=4
x=np.zeros(N+1)
y=np.zeros(len(Q2))
for m in range(0, int(len(Q2))):
for k in range(0,N+1):
x[k]=b[k]*Q2[k-m]
if (m>N+1):
for k in range(1,(N+1)):
y[k]=a[k]*y[k-m]
q=sum(x)
e=sum(y)
Y[m]=q-e
else:
Y[m]=sum(x)
z=np.fft.fft(Y)
plt.plot(abs(z))
plt.show()