zoukankan      html  css  js  c++  java
  • 滤波器相关知识

    滤波器相关

    理想滤波器幅频特性中通带和阻带的增益均为0

    实际滤波器通带与阻带之间存在过渡带(迁移带)

    数字滤波器进行滤波:需要对模拟信号通过ADC进行A/D转换称数字信号后在进行数字滤波,滤波后在进行D/A转换回模拟信号

    但ADC之前要通过抗混叠滤波器,一般采用模拟滤波器

    频率响应:幅频响应+相频响应

    单位冲激响应--傅里叶变换-->频率响应

    当输出信号幅值降低至最大值的1/sqrt(2)=0.707倍时,对应的频率称截止频率

    当输出下降速度趋于稳定时,频率每增大10倍,幅值对应降低10倍,即减小20dB

    伯德图就是坐标轴取了对数的幅频特性曲线

    其优点在于横轴频率范围大,纵轴频率范围大,将频率响应不规则曲线转变成规则曲线

    n阶巴特沃斯低通滤波器幅频响应图:

    $ |H(w)|=frac{1}{sqrt{1+(frac{w}{w_c})^{2n}}}$

    w_c是滤波器截止频率,n是滤波器阶数

    # 连载481: 1、2、3阶巴特沃斯低通滤波器波特图
    omega = np.arange(1,500000)
    A = 1/np.sqrt(1+(omega/5000)**2)
    plt.loglog(omega,A,label='First-order Butterworth Filter')
    A = 1/np.sqrt(1+(omega/5000)**4)
    plt.loglog(omega,A,label='Second-order Butterworth Filter')
    A = 1/np.sqrt(1+(omega/5000)**6)
    plt.loglog(omega,A,label='Third-order Butterworth Filter')
    plt.legend(loc="best",fontsize=10)
    plt.xlabel('rad/s')
    plt.ylabel('dB')
    plt.show()
    

    n阶巴特沃斯高通滤波器幅频响应图:

    $ |H(w)|=frac{1}{sqrt{1+(frac{w_c}{w})^{2n}}}$

    w_c是滤波器截止频率,n是滤波器阶数

    # high-pass filter
    omega = np.arange(1,500000)
    H = 1/(1+1j*5000/omega)
    A = abs(H)
    plt.loglog(omega,A)
    

    n阶巴特沃斯带通滤波器幅频响应图:

    $ |H(w)|=frac{1}{sqrt{1+(frac{w2-w_0}{Bw}){2n}}}$

    w_0是滤波器中心频率,B是滤波器带宽,n是滤波器阶数

    截止频率(omega_c = frac{sqrt{B^2+4w_0^2}pm B}{2})

    # band-pass filter
    omega = np.arange(0.1,100000)
    H = 1/(1+1j*(omega**2-100**2)/(200*omega))
    A = abs(H)
    plt.loglog(omega,A)
    plt.xlabel('$omega$(rad/s)')
    plt.ylabel('|H(w)| (dB)')
    

    连载483: 通过传递函数绘制波特图

    由自动控制原理可知二阶巴特沃斯低通滤波器系统传递函数(用jw替代s)是

    (H(s)=frac{1}{frac{1}{w_c^2}s^2+frac{sqrt{2}}{w_c}s+1})

    # 连载496 设计滤波器
    fp = 5000 #通带截止频率
    fs = 12000 #阻带截止频率
    Rp = 2 #通带最大衰减系数
    Rs = 30 #阻带最大衰减系数
    [N, wn] = scipy.signal.buttord(wp=fp, ws=fs, gpass=Rp, gstop=Rs, analog=True)
    # 连载499 已知截止频率和阶数, b,a 是系统传递函数的分子和分母
    n = 2
    Wn = 5000
    b, a = scipy.signal.butter(n,Wn,'low',analog=True)
    w, h = scipy.signal.freqs(b, a)
    plt.semilogx(w, 20 * np.log10(abs(h)))
    plt.title('Butterworth filter frequency response')
    plt.xlabel('Frequency [radians / second]')
    plt.ylabel('Amplitude [dB]')
    plt.margins(0, 0.1)
    plt.grid(which='both', axis='both')
    plt.axvline(5000, color='green') # cutoff frequency
    plt.show()
    

    此外还有第一类、第二类切比雪夫滤波器cheb1ord以及椭圆滤波器ellipord

    不知为何新浪图床出现问题,故附上github网址

    本博客由博主原创,链接:https://www.cnblogs.com/WindyZ/
  • 相关阅读:
    小米智能家居接入智能家居平台homeassistant的方法
    我的nodejs 快速入门
    node.js JS对象和JSON字符串之间的转换
    Mac安装搭建sublimeText3开发Nodejs环境
    使用Xcode IDE写node.js
    nodejs中exports与module.exports的区别
    安装pysqlite2
    linux 终端分屏命令
    MQTT学习笔记
    Cache缓存
  • 原文地址:https://www.cnblogs.com/WindyZ/p/Filter.html
Copyright © 2011-2022 走看看