Академический Документы
Профессиональный Документы
Культура Документы
Filtros FIR
Filtros Digitales
16 de junio de 2019
1 Introducción
2 Filtros FIR
Diseño de filtros FIR de fase lineal utilizando ventanas
Diseño de filtros
Filtros digitales
Filtros FIR
Filtros FIR
donde Z π
1
hd (n) = Hd (ω)e jωn dω
2π −π
Funciones de ventanas
Funciones de ventanas
Función rectangular
M=11
0 M=31
M=61
Normalized magnit de [dB]
−20
−40
−60
−80
Función rectangular
Función rectangular
Por otro lado, los grandes lóbulos secundarios de W (ω) dan lugar
a una serie de efectos de rizado no deseados en la respuesta en
frecuencia del filtro FIR H(ω), y también en los relativamente gran-
des lóbulos de secundarios de H(ω). Estos efectos no deseados se
eliminan bien utilizando ventanas que no contengan discontinuida-
des abruptas en sus caracterı́sticas en el dominio en el tiempo y los
correspondientes lóbulos secundarios más pequeños en sus carac-
terı́sticas en el dominio de la frecuencia.
1.0
0.8
0.6
Amplitude
Rectangular
Bartlett
0.4 Blackman
Bohman
Hanning
0.2 Tukey
0.0
0 10 20 30 40 50 60
Sample
−50
Normalized magni ude [dB]
−100
−150
0.6
0.4
0.2
0.0
0 200 400 600 800 1000
Frequency (Hz)
1.0 Rectangular
Bartlett
Blackman
0.8 Bohman
Hanning
Tukey
Magnitude
0.6
0.4
0.2
0.0
0 200 400 600 800 1000
Frequency (Hz)
1.0
0.8
0.6
Amplitude
0.4 Beta=0
Beta=2
Beta=6
0.2
Beta=8.6
Bata=14
0.0
0 10 20 30 40 50
Sample
−50
−75
−100
−125
Beta=0
−150 Beta=2
−175 Beta=6
Beta=8.6
−200 Beta=14
0.0 0.1 0.2 0.3 0.4 0.5
Normalized freq ency [cycles per sample]
1.0
0.8
Magnitude
0.6
0.4 Beta=0
Beta=2
0.2 Beta=6
Beta=8.5
Beta=14
0.0
0 100 200 300 400
Frequency(Hz)
1.0
0.8
Magnitude
0.6
Beta=0
0.4 Beta=2
Beta=6
Beta=8.5
0.2
Beta=14
0.0
0 100 200 300 400
Frequency(Hz)
1.0
0.8
Magnitude
0.6
Beta=0
0.4 Beta=2
Beta=6
Beta=8.5
0.2 Beta=14
0.0
0 100 200 300 400
Frequency(Hz)
1.0
0.8
Magnitude
0.6
Beta=0
0.4 Beta=2
Beta=6
Beta=8.5
0.2
Beta=14
0.0
0 100 200 300 400
Frequency(Hz)
1
# -*- coding: utf-8 -*-
"""
Created on Sat May 4 13:55:56 2019
FIR (ventanas frecuencia)
Tecnológico Nacional de México
Tecnológico de Estudios Superiores de Ixtapaluca
División de Ingeniería Electrónica
@author: M. en C. Rogelio Manuel Higuera Gonzalez
"""
from scipy import signal
from scipy.fftpack import fft, fftshift
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
params = {'xtick.labelsize': 14, 'ytick.labelsize': 14}
mpl.rcParams.update(params)
window1 = signal.boxcar(61)
window2 = signal.bartlett(61)
window3 = signal.blackman(61)
window4 = signal.bohman(61)
window5 = signal.hanning(61)
window6 = signal.tukey(61)
A1 = fft(window1, 2048) / (len(window1)/2.0)
A2 = fft(window2, 2048) / (len(window2)/2.0)
A3 = fft(window3, 2048) / (len(window3)/2.0)
A4 = fft(window4, 2048) / (len(window4)/2.0)
A5 = fft(window5, 2048) / (len(window5)/2.0)
A6 = fft(window6, 2048) / (len(window6)/2.0)
response1 = 20 * np.log10(np.abs(fftshift(A1 / abs(A1).max())))
response2 = 20 * np.log10(np.abs(fftshift(A2 / abs(A2).max())))
response3 = 20 * np.log10(np.abs(fftshift(A3 / abs(A3).max())))
response4 = 20 * np.log10(np.abs(fftshift(A4 / abs(A4).max())))
response5 = 20 * np.log10(np.abs(fftshift(A5 / abs(A5).max())))
response6 = 20 * np.log10(np.abs(fftshift(A6 / abs(A6).max())))
freq = np.linspace(-0.5, 0.5, len(A1))
fig,axes=plt.subplots(figsize=(11, 6))
axes.plot(window1,label='Rectangular',linewidth=2)
axes.plot(window2,label='Bartlett',linewidth=2)
axes.plot(window3,label='Blackman',linewidth=2)
axes.plot(window4,label='Bohman',linewidth=2)
axes.plot(window5,label='Hanning',linewidth=2)
axes.plot(window6,label='Tukey',linewidth=2)
axes.set_ylabel('Amplitude',fontsize=16)
axes.set_xlabel('Sample',fontsize=16)
plt.legend(bbox_to_anchor=(0.40,0.55),loc=2,borderaxespad=0.1,fontsize=14)
plt.grid(True)
plt.savefig('ventanasample1.eps',dpi=1000,bbox_inches='tight')
fig,axes1=plt.subplots(figsize=(11, 6))
axes1.plot(freq,response1,label='Rectangular',linewidth=2)
axes1.plot(freq,response2,label='Bartlett',linewidth=2)
axes1.plot(freq,response3,label='Blackman',linewidth=2)
axes1.plot(freq,response4,label='Bohman',linewidth=2)
axes1.plot(freq,response5,label='Hanning',linewidth=2)
axes1.plot(freq,response6,label='Tukey',linewidth=2)
axes1.set_xlim([0,0.5])
axes1.set_ylabel('Normalized magnitude [dB]',fontsize=16)
axes1.set_xlabel('Normalized frequency [cycles per sample]',fontsize=16)
1
plt.legend(bbox_to_anchor=(0.35,0.45),loc=2,borderaxespad=0.1,fontsize=14)
plt.grid(True)
plt.savefig('ventanasfreq1.eps',dpi=1000,bbox_inches='tight')
2
# -*- coding: utf-8 -*-
"""
Created on Sun May 5 17:08:34 2019
Filtro FIR (Prueba1)
Tecnológico Nacional de México
Tecnológico de Estudios Superiores de Ixtapaluca
División de Ingeniería Electrónica
@author: M. en C. Rogelio Manuel Higuera Gonzalez
"""
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
import matplotlib as mpl
params = {'xtick.labelsize': 14, 'ytick.labelsize': 14}
mpl.rcParams.update(params)
f1=50 #Frecuencia de la señal 1
f2=200 #Frecuencia de la señal 2
A1=1 #Amplitud de la señal 1
A2=0.5 #Amplitud de la señal 2
w1=2*np.pi*f1 #Frecuencia angular señal 1
w2=2*np.pi*f2 #Frecuencia angulae señal 2
T=1/f1 #Periodo de la señal 1
n=10000 #Numero de muestras
t=np.linspace(0,250*T,n) #Vector de tiempo
V1=A1*np.sin(w1*t) #Señal 1
V2=A2*np.sin(w2*t) #Señal 2
Vin=V1+V2
fs=1/(t[10]-t[9]) #Frecuencia de muestreo
fc1=100 #Frecuencia de corte 1
fc2=300 #Frecuencia de corte 2
wn1=fc1/(fs/2) #Frecuencia Normalizada 1
wn2=fc2/(fs/2) #Frecuencia Normalizada 2
M1=11 #Orden del Filtro
M2=31 #Orden del Filtro
M3=61 #Orden del Filtro
M4=101 #Orden del Filtro
taps1 = signal.firwin(M1,[wn1,wn2],pass_zero=False, window=('boxcar'))
taps2 = signal.firwin(M2,[wn1,wn2],pass_zero=False, window=('boxcar'))
taps3 = signal.firwin(M3,[wn1,wn2],pass_zero=False, window=('boxcar'))
taps4 = signal.firwin(M4,[wn1,wn2],pass_zero=False, window=('boxcar'))
w_1, h_1 = signal.freqz(taps1, worN=8000)
w_2, h_2 = signal.freqz(taps2, worN=8000)
w_3, h_3 = signal.freqz(taps3, worN=8000)
w_4, h_4 = signal.freqz(taps4, worN=8000)
fig,axes1=plt.subplots(figsize=(11, 6))
axes1.plot((w_1/np.pi)*(fs/2), np.absolute(h_1), label='M=11', linewidth=2)
axes1.plot((w_2/np.pi)*(fs/2), np.absolute(h_2), label='M=31', linewidth=2)
axes1.plot((w_3/np.pi)*(fs/2), np.absolute(h_3), label='M=61', linewidth=2)
axes1.plot((w_4/np.pi)*(fs/2), np.absolute(h_4), label='M=101', linewidth=2)
axes1.set_ylabel('Magnitude',fontsize=16)
axes1.set_xlabel('Frequency (Hz)',fontsize=16)
plt.legend(bbox_to_anchor=(0.80,0.98),loc=2,borderaxespad=0.1,fontsize=16)
plt.grid(True)
plt.savefig('FIRven2.eps',dpi=1000,bbox_inches='tight')
1
# -*- coding: utf-8 -*-
"""
Created on Sun May 5 17:08:34 2019
Filtro FIR (Ventanas)
Tecnológico Nacional de México
Tecnológico de Estudios Superiores de Ixtapaluca
División de Ingeniería Electrónica
@author: M. en C. Rogelio Manuel Higuera Gonzalez
"""
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
import matplotlib as mpl
params = {'xtick.labelsize': 14, 'ytick.labelsize': 14}
mpl.rcParams.update(params)
f1=50 #Frecuencia de la señal 1
f2=200 #Frecuencia de la señal 2
A1=1 #Amplitud de la señal 1
A2=0.5 #Amplitud de la señal 2
w1=2*np.pi*f1 #Frecuencia angular señal 1
w2=2*np.pi*f2 #Frecuencia angulae señal 2
T=1/f1 #Periodo de la señal 1
n=10000 #Numero de muestras
t=np.linspace(0,250*T,n) #Vector de tiempo
V1=A1*np.sin(w1*t) #Señal 1
V2=A2*np.sin(w2*t) #Señal 2
Vin=V1+V2
fs=1/(t[10]-t[9]) #Frecuencia de muestreo
fc1=100 #Frecuencia de corte 1
fc2=300 #Frecuencia de corte 2
wn1=fc1/(fs/2) #Frecuencia Normalizada 1
wn2=fc2/(fs/2) #Frecuencia Normalizada 2
M=61 #Orden del Filtro
taps1 = signal.firwin(M,[wn1,wn2],pass_zero=False, window=('boxcar'))
taps2 = signal.firwin(M,[wn1,wn2],pass_zero=False, window=('bartlett'))
taps3 = signal.firwin(M,[wn1,wn2],pass_zero=False, window=('blackman'))
taps4 = signal.firwin(M,[wn1,wn2],pass_zero=False, window=('bohman'))
taps5 = signal.firwin(M,[wn1,wn2],pass_zero=False, window=('hanning'))
taps6 = signal.firwin(M,[wn1,wn2],pass_zero=False, window=('tukey',1))
w_1, h_1 = signal.freqz(taps1, worN=8000)
w_2, h_2 = signal.freqz(taps2, worN=8000)
w_3, h_3 = signal.freqz(taps3, worN=8000)
w_4, h_4 = signal.freqz(taps4, worN=8000)
w_5, h_5 = signal.freqz(taps5, worN=8000)
w_6, h_6 = signal.freqz(taps4, worN=8000)
fig,axes1=plt.subplots(figsize=(11, 6))
axes1.plot((w_1/np.pi)*(fs/2), np.absolute(h_1), label='Boxcar', linewidth=2)
axes1.plot((w_2/np.pi)*(fs/2), np.absolute(h_2), label='Bartlett', linewidth=2)
axes1.plot((w_3/np.pi)*(fs/2), np.absolute(h_3), label='Blackman', linewidth=2)
axes1.plot((w_4/np.pi)*(fs/2), np.absolute(h_4), label='Bohman', linewidth=2)
axes1.plot((w_5/np.pi)*(fs/2), np.absolute(h_5), label='Hanning', linewidth=2)
axes1.plot((w_6/np.pi)*(fs/2), np.absolute(h_6), label='Tukey', linewidth=2)
axes1.set_ylabel('Magnitude',fontsize=16)
axes1.set_xlabel('Frequency (Hz)',fontsize=16)
plt.legend(bbox_to_anchor=(0.80,0.98),loc=2,borderaxespad=0.1,fontsize=16)
plt.grid(True)
plt.savefig('FIRven1.eps',dpi=1000,bbox_inches='tight')
1
# -*- coding: utf-8 -*-
"""
Created on Sun May 5 18:51:37 2019
Filtro FIR (Prueba2)
Tecnológico Nacional de México
Tecnológico de Estudios Superiores de Ixtapaluca
División de Ingeniería Electrónica
@author: M. en C. Rogelio Manuel Higuera Gonzalez
"""
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
import matplotlib as mpl
params = {'xtick.labelsize': 14, 'ytick.labelsize': 14}
mpl.rcParams.update(params)
f1=0.1 #Frecuencia de la señal 1
f2=100 #Frecuencia de la señal 2
A1=1 #Amplitud de la señal 1
A2=0.5 #Amplitud de la señal 2
w1=2*np.pi*f1 #Frecuencia angular señal 1
w2=2*np.pi*f2 #Frecuencia angulae señal 2
T=1/f1 #Periodo de la señal 1
n=10000000 #Numero de muestras
t=np.linspace(0,1200*T,n) #Vector de tiempo
V1=A1*np.sin(w1*t) #Señal 1
V2=A2*np.sin(w2*t) #Señal 2
noise=np.random.normal(0,1,n)
Vin=V1+V2+noise
fs=1/(t[10]-t[9]) #Frecuencia de muestreo
fc1=100 #Frecuencia de corte 1
fc2=300 #Frecuencia de corte 2
wn1=fc1/(fs/2) #Frecuencia Normalizada 1
wn2=fc2/(fs/2) #Frecuencia Normalizada 2
N=61 #Orden del Filtro
taps1 = signal.firwin(N,[wn1,wn2],pass_zero=False, window=('kaiser',0))
taps2 = signal.firwin(N,[wn1,wn2],pass_zero=False, window=('kaiser',2))
taps3 = signal.firwin(N,[wn1,wn2],pass_zero=False, window=('kaiser',6))
taps4 = signal.firwin(N,[wn1,wn2],pass_zero=False, window=('kaiser',8.5))
taps5 = signal.firwin(N,[wn1,wn2],pass_zero=False, window=('kaiser',14))
w_1, h_1 = signal.freqz(taps1, worN=8000)
w_2, h_2 = signal.freqz(taps2, worN=8000)
w_3, h_3 = signal.freqz(taps3, worN=8000)
w_4, h_4 = signal.freqz(taps4, worN=8000)
w_5, h_5 = signal.freqz(taps5, worN=8000)
fig,axes1=plt.subplots(figsize=(11, 6))
axes1.plot((w_1/np.pi)*(fs/2), np.absolute(h_1), label='Beta=0', linewidth=2)
axes1.plot((w_2/np.pi)*(fs/2), np.absolute(h_2), label='Beta=2', linewidth=2)
axes1.plot((w_3/np.pi)*(fs/2), np.absolute(h_3), label='Beta=6', linewidth=2)
axes1.plot((w_4/np.pi)*(fs/2), np.absolute(h_4), label='Beta=8.5', linewidth=2)
axes1.plot((w_5/np.pi)*(fs/2), np.absolute(h_5), label='Beta=14', linewidth=2)
axes1.set_ylabel('Magnitude',fontsize=16)
axes1.set_xlabel('Frequency(Hz)',fontsize=16)
plt.legend(bbox_to_anchor=(0.38,0.41),loc=2,borderaxespad=0.1,fontsize=16)
plt.grid(True)
plt.savefig('FIRven3.eps',dpi=1000,bbox_inches='tight')
1
# -*- coding: utf-8 -*-
"""
Created on Sun May 5 18:51:37 2019
Filtro FIR (Prueba2)
Tecnológico Nacional de México
Tecnológico de Estudios Superiores de Ixtapaluca
División de Ingeniería Electrónica
@author: M. en C. Rogelio Manuel Higuera Gonzalez
"""
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
import matplotlib as mpl
params = {'xtick.labelsize': 14, 'ytick.labelsize': 14}
mpl.rcParams.update(params)
f1=0.1 #Frecuencia de la señal 1
f2=100 #Frecuencia de la señal 2
A1=1 #Amplitud de la señal 1
A2=0.5 #Amplitud de la señal 2
w1=2*np.pi*f1 #Frecuencia angular señal 1
w2=2*np.pi*f2 #Frecuencia angulae señal 2
T=1/f1 #Periodo de la señal 1
n=10000000 #Numero de muestras
t=np.linspace(0,1200*T,n) #Vector de tiempo
V1=A1*np.sin(w1*t) #Señal 1
V2=A2*np.sin(w2*t) #Señal 2
noise=np.random.normal(0,1,n)
Vin=V1+V2+noise
fs=1/(t[10]-t[9]) #Frecuencia de muestreo
fc1=100 #Frecuencia de corte 1
fc2=300 #Frecuencia de corte 2
wn1=fc1/(fs/2) #Frecuencia Normalizada 1
wn2=fc2/(fs/2) #Frecuencia Normalizada 2
N=61 #Orden del Filtro
taps1 = signal.firwin(N,[wn1,wn2],pass_zero=True, window=('kaiser',0))
taps2 = signal.firwin(N,[wn1,wn2],pass_zero=True, window=('kaiser',2))
taps3 = signal.firwin(N,[wn1,wn2],pass_zero=True, window=('kaiser',6))
taps4 = signal.firwin(N,[wn1,wn2],pass_zero=True, window=('kaiser',8.5))
taps5 = signal.firwin(N,[wn1,wn2],pass_zero=True, window=('kaiser',14))
w_1, h_1 = signal.freqz(taps1, worN=8000)
w_2, h_2 = signal.freqz(taps2, worN=8000)
w_3, h_3 = signal.freqz(taps3, worN=8000)
w_4, h_4 = signal.freqz(taps4, worN=8000)
w_5, h_5 = signal.freqz(taps5, worN=8000)
fig,axes1=plt.subplots(figsize=(11, 6))
axes1.plot((w_1/np.pi)*(fs/2), np.absolute(h_1), label='Beta=0', linewidth=2)
axes1.plot((w_2/np.pi)*(fs/2), np.absolute(h_2), label='Beta=2', linewidth=2)
axes1.plot((w_3/np.pi)*(fs/2), np.absolute(h_3), label='Beta=6', linewidth=2)
axes1.plot((w_4/np.pi)*(fs/2), np.absolute(h_4), label='Beta=8.5', linewidth=2)
axes1.plot((w_5/np.pi)*(fs/2), np.absolute(h_5), label='Beta=14', linewidth=2)
axes1.set_ylabel('Magnitude',fontsize=16)
axes1.set_xlabel('Frequency(Hz)',fontsize=16)
plt.legend(bbox_to_anchor=(0.38,0.51),loc=2,borderaxespad=0.1,fontsize=16)
plt.grid(True)
plt.savefig('FIRven4.eps',dpi=1000,bbox_inches='tight')
1
# -*- coding: utf-8 -*-
"""
Created on Sun May 5 18:51:37 2019
Filtro FIR (Prueba2)
Tecnológico Nacional de México
Tecnológico de Estudios Superiores de Ixtapaluca
División de Ingeniería Electrónica
@author: M. en C. Rogelio Manuel Higuera Gonzalez
"""
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
import matplotlib as mpl
params = {'xtick.labelsize': 14, 'ytick.labelsize': 14}
mpl.rcParams.update(params)
f1=0.1 #Frecuencia de la señal 1
f2=100 #Frecuencia de la señal 2
A1=1 #Amplitud de la señal 1
A2=0.5 #Amplitud de la señal 2
w1=2*np.pi*f1 #Frecuencia angular señal 1
w2=2*np.pi*f2 #Frecuencia angulae señal 2
T=1/f1 #Periodo de la señal 1
n=10000000 #Numero de muestras
t=np.linspace(0,1200*T,n) #Vector de tiempo
V1=A1*np.sin(w1*t) #Señal 1
V2=A2*np.sin(w2*t) #Señal 2
noise=np.random.normal(0,1,n)
Vin=V1+V2+noise
fs=1/(t[10]-t[9]) #Frecuencia de muestreo
fc1=300 #Frecuencia de corte 2
wn1=fc1/(fs/2) #Frecuencia Normalizada 1
N=61 #Orden del Filtro
taps1 = signal.firwin(N,wn1,pass_zero=True, window=('kaiser',0))
taps2 = signal.firwin(N,wn1,pass_zero=True, window=('kaiser',2))
taps3 = signal.firwin(N,wn1,pass_zero=True, window=('kaiser',6))
taps4 = signal.firwin(N,wn1,pass_zero=True, window=('kaiser',8.5))
taps5 = signal.firwin(N,wn1,pass_zero=True, window=('kaiser',14))
w_1, h_1 = signal.freqz(taps1, worN=8000)
w_2, h_2 = signal.freqz(taps2, worN=8000)
w_3, h_3 = signal.freqz(taps3, worN=8000)
w_4, h_4 = signal.freqz(taps4, worN=8000)
w_5, h_5 = signal.freqz(taps5, worN=8000)
fig,axes1=plt.subplots(figsize=(11, 6))
axes1.plot((w_1/np.pi)*(fs/2), np.absolute(h_1), label='Beta=0', linewidth=2)
axes1.plot((w_2/np.pi)*(fs/2), np.absolute(h_2), label='Beta=2', linewidth=2)
axes1.plot((w_3/np.pi)*(fs/2), np.absolute(h_3), label='Beta=6', linewidth=2)
axes1.plot((w_4/np.pi)*(fs/2), np.absolute(h_4), label='Beta=8.5', linewidth=2)
axes1.plot((w_5/np.pi)*(fs/2), np.absolute(h_5), label='Beta=14', linewidth=2)
axes1.set_ylabel('Magnitude',fontsize=16)
axes1.set_xlabel('Frequency(Hz)',fontsize=16)
plt.legend(bbox_to_anchor=(0.38,0.51),loc=2,borderaxespad=0.1,fontsize=16)
plt.grid(True)
plt.savefig('FIRven5.eps',dpi=1000,bbox_inches='tight')
1
# -*- coding: utf-8 -*-
"""
Created on Sun May 5 18:51:37 2019
Filtro FIR (Prueba2)
Tecnológico Nacional de México
Tecnológico de Estudios Superiores de Ixtapaluca
División de Ingeniería Electrónica
@author: M. en C. Rogelio Manuel Higuera Gonzalez
"""
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
import matplotlib as mpl
params = {'xtick.labelsize': 14, 'ytick.labelsize': 14}
mpl.rcParams.update(params)
f1=0.1 #Frecuencia de la señal 1
f2=100 #Frecuencia de la señal 2
A1=1 #Amplitud de la señal 1
A2=0.5 #Amplitud de la señal 2
w1=2*np.pi*f1 #Frecuencia angular señal 1
w2=2*np.pi*f2 #Frecuencia angulae señal 2
T=1/f1 #Periodo de la señal 1
n=10000000 #Numero de muestras
t=np.linspace(0,1200*T,n) #Vector de tiempo
V1=A1*np.sin(w1*t) #Señal 1
V2=A2*np.sin(w2*t) #Señal 2
noise=np.random.normal(0,1,n)
Vin=V1+V2+noise
fs=1/(t[10]-t[9]) #Frecuencia de muestreo
fc1=300 #Frecuencia de corte 2
wn1=fc1/(fs/2) #Frecuencia Normalizada 1
N=61 #Orden del Filtro
taps1 = signal.firwin(N,wn1,pass_zero=False, window=('kaiser',0))
taps2 = signal.firwin(N,wn1,pass_zero=False, window=('kaiser',2))
taps3 = signal.firwin(N,wn1,pass_zero=False, window=('kaiser',6))
taps4 = signal.firwin(N,wn1,pass_zero=False, window=('kaiser',8.5))
taps5 = signal.firwin(N,wn1,pass_zero=False, window=('kaiser',14))
w_1, h_1 = signal.freqz(taps1, worN=8000)
w_2, h_2 = signal.freqz(taps2, worN=8000)
w_3, h_3 = signal.freqz(taps3, worN=8000)
w_4, h_4 = signal.freqz(taps4, worN=8000)
w_5, h_5 = signal.freqz(taps5, worN=8000)
fig,axes1=plt.subplots(figsize=(11, 6))
axes1.plot((w_1/np.pi)*(fs/2), np.absolute(h_1), label='Beta=0', linewidth=2)
axes1.plot((w_2/np.pi)*(fs/2), np.absolute(h_2), label='Beta=2', linewidth=2)
axes1.plot((w_3/np.pi)*(fs/2), np.absolute(h_3), label='Beta=6', linewidth=2)
axes1.plot((w_4/np.pi)*(fs/2), np.absolute(h_4), label='Beta=8.5', linewidth=2)
axes1.plot((w_5/np.pi)*(fs/2), np.absolute(h_5), label='Beta=14', linewidth=2)
axes1.set_ylabel('Magnitude',fontsize=16)
axes1.set_xlabel('Frequency(Hz)',fontsize=16)
plt.legend(bbox_to_anchor=(0.38,0.51),loc=2,borderaxespad=0.1,fontsize=16)
plt.grid(True)
plt.savefig('FIRven6.eps',dpi=1000,bbox_inches='tight')