python带通滤波_使用python和numpy,scipy做FIR带通滤波实验

import numpy as np

import matplotlib.pyplot as plt

import scipy.signal as signal

Fs=8000

Ts=1.0/Fs

Ns=512

t=np.arange(0,Ts*(Ns-1),Ts)

f1=500

f2=1800

f3=2000

f4=3200

x1=np.sin(2*np.pi*f1*t)

x2=np.sin(2*np.pi*f2*t)

x3=np.sin(2*np.pi*f3*t)

x4=np.sin(2*np.pi*f4*t)

x=x1+x2+x3+x4

xo=x2+x3

b=np.array([0.0051,0,-0.0294,0,0.1107,0,-0.2193,0,0.271,0,-0.2193,0,0.1107,0,-0.0294,0,0.0051])

y=signal.convolve(x,b)

fftmag=np.abs(np.fft.fft(x,Ns))

fftmagh=fftmag[1:len(fftmag)/2]

f=np.arange(1,len(fftmagh)+1)*Fs/Ns

Npts=200

fig = plt.figure(1)

ax = fig.add_subplot(311)

ax.set_title('input signal')

ax.plot(t[1:Npts],x[1:Npts])

ax = fig.add_subplot(312)

ax.set_title('expected signal')

ax.plot(t[1:Npts],xo[1:Npts])

ax = fig.add_subplot(313)

ax.set_title('filtered signal')

ax.plot(t[1:Npts],y[1:Npts])

[系统:windows7 32bit  python-2.7首先安装python-2.7,  下载地址:https://www.python.org/downloads/注意安装顺序:然后安装Scripy , 下载地址:http://sourceforg

w,h = signal.freqz(b,1)

hdb = 20 * np.log10(np.abs(h))

hphs = np.unwrap(np.arctan2(np.imag(h),np.real(h)))

fig2=plt.figure(2)

ax2 = fig2.add_subplot(211)

ax2.set_title('frequency response')

ax2.plot(w/max(w),hdb)

ax2 = fig2.add_subplot(212)

ax2.set_title('phase response')

ax2.plot(w/max(w),hphs)

plt.show()

UZbYry.png

qqeyy2.png[value error trying to install numpy on windows 8http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值