python求fir滤波器,矩形窗 
- import math
 
  
- def sinc(x):
 
 -     if x==0.0:
 
 -         return 1.0
 
 -     else:
 
 -         return math.sin(math.pi*x)/math.pi/x
 
  
- def impulse(x):
 
 -     if x==0.0:
 
 -         return 1.0
 
 -     else :
 
 -         return 0
 
  
 
 
- N=9
 
 - #线性相位条件
 
 - k=(N-1)/2
 
 - #测试低通高通
 
 - fc=0.1
 
  
- #测试带通带阻
 
 - f1=0.1
 
 - f2=0.2
 
  
- #低通
 
 - for i in range(0,N,1):
 
 -     print(2*fc*sinc(2*fc*(i-k)))
 
  
- print('------------------------')
 
  
- #高通
 
 - for i in range(0,N,1):
 
 -     print(impulse(i-k)-2*fc*sinc(2*fc*(i-k)))
 
  
- print('------------------------')
 
  
- #带通
 
 - for i in range(0,N,1):
 
 -     print(2*f2*sinc(2*f2*(i-k))-2*f1*sinc(2*f1*(i-k)))
 
  
- print('------------------------')
 
  
- #带阻
 
 - for i in range(0,N,1):
 
 -     print(sinc(i-k)-2*f2*sinc(2*f2*(i-k))+2*f1*sinc(2*f1*(i-k)))
 
  
- print('------------------------')
 
  
  
  |