信号处理小结(2):滤波器
来源:互联网 发布:中昌数据股票 编辑:程序博客网 时间:2024/05/20 18:19
除了用基本滤波单元组成级联滤波器的方法外,在数字保护中用得较多的就是用零、极点配置法设计数字滤波器。它通过直接在Z平面上合理地设置零点和极点,以得到合乎要求的频率响应特性和时延特性。
一、全零点滤波器
在转移函数中只含有零点而无极点。假定N为偶数,要求除k=m次谐波外,完全滤除直流、N/2次及其它各次谐波。
二、狭窄带通滤波器
除了考虑必要的零点外,在需要滤取得频率处再设置一个合适的极点。如使r很接近1,就可以获得很窄的通带和比较陡峭的过渡带。
为距离保护设计一个狭窄带通滤波器。要求完全抑制直流和N/2次谐波分量,并比较采样频率fs、极点的极径r=p对滤波特性的影响。
滤波器的转移函数为
p越接近1,幅频特性曲线越窄越陡,因此p的取值与滤波器滤除非基频分量的能力成正比变化。
设p=0.95。有图可见,随fs增大,滤波器滤除非基频分量能力下降。这是由于位于高频处的零点对应于N/2次谐波,当fs越低,N/2次谐波分量就越靠近基频。但fs越低,对模拟低通滤波器的要求越苛刻,或者说越容易出现混叠现象。
## 全零点滤波器# -*- coding: utf-8 -*-import numpy as npimport matplotlib.pyplot as pltfrom pylab import *mpl.rcParams['font.sans-serif'] = 'KaiTi'mpl.rcParams['axes.unicode_minus'] = Falsen = np.arange(0,6, 0.0002)N = 12z = np.exp(2*np.pi*n/N*1j)##f = (1-z**(-8))**2*(1-z**(-10))/(1-z**(-12))Hb = ( 1+z**(-2)-z**(-6)-z**(-8))Hb1 = ( 1+z**(-2)-z**(-6)-z**(-8))*( 1+np.sqrt(3)*z**(-1)+z**(-2))Hs = ( 1-z**(-3)+z**(-6)-z**(-9))Hs1 = ( 1-z**(-3)+z**(-6)-z**(-9))*( 1+z**(-1))magHb = np.abs(Hb)magHb1 = np.abs(Hb1)magHs = np.abs(Hs)magHs1 = np.abs(Hs1)plt.figure(1)plt.plot(n, magHb/np.max(magHb), label=u"简化的基波滤波器幅频特性", lw=2)plt.plot(n, magHb1/np.max(magHb1), '--', label=u"基波滤波器幅频特性", lw=2)plt.xlabel(r"$f/f_1$", fontsize=15)plt.xticks(fontsize=18); plt.yticks(fontsize=18)plt.title(r"$H_b=(1+z^{-2}-z^{-6}-z^{-8})( 1+\sqrt{3}z^{-1}+z^{-2})$", fontsize=15)plt.legend()plt.figure(2)plt.plot(n, magHs/np.max(magHs), label=u"简化的二次谐波滤波器幅频特性", lw=2)plt.plot(n, magHs1/np.max(magHs1), '--', label=u"二次谐波滤波器幅频特性", lw=2)plt.xlabel(r"$f/f_1$", fontsize=15)plt.xticks(fontsize=18); plt.yticks(fontsize=18)plt.title(r"$H_s=(1-z^{-3}+z^{-6}-z^{-9})( 1+z^{-1})$", fontsize=15)plt.legend()plt.show()
## 狭窄带通滤波器# -*- coding: utf-8 -*-import numpy as npimport matplotlib.pyplot as pltfrom pylab import *mpl.rcParams['font.sans-serif'] = 'KaiTi'mpl.rcParams['axes.unicode_minus'] = Falsen = np.arange(0,20, 0.0001)w1 = 2*np.pi*50fs = np.array([600, 1000, 1500])N = fs/50z = np.exp(2*np.pi*n/N[1]*1j)Ts = [1.0/600, 1.0/1000, 1.0/1500]plt.figure(1)line_style = ['r-.', 'k--', '-']line_label = ['p = 0.969', 'p = 0.936', 'p = 0.910']p = [0.969, 0.936, 0.910]i = 0for p in [0.969, 0.936, 0.910]: Hz = ( 1-z**(-2) ) / ( 1-2*p*np.cos(w1*Ts[1])*z**(-1)+p**2*z**(-2) ) magHz = np.abs(Hz) if i==0: max_mag = np.max(magHz) plt.plot(n, magHz/max_mag, line_style[i], lw=2, label=line_label[i]) i += 1plt.xticks(fontsize=18); plt.yticks(fontsize=18)plt.xlabel(r"$f/f_1$", fontsize=15)plt.title(u"狭窄带通滤波器频谱特性与参数p的关系", fontsize=15)plt.legend()plt.figure(2)p = 0.95for i in [0, 1, 2]: z = np.exp(2*np.pi*n/N[i]*1j) Hz = ( 1-z**(-2) ) / ( 1-2*p*np.cos(w1*Ts[i])*z**(-1)+p**2*z**(-2) ) magHz = np.abs(Hz) if i==0: max_mag = np.max(magHz) plt.plot(n, magHz/max_mag, line_style[i], lw=2, label=('fs = '+str(fs[i])+'Hz'))plt.xticks(fontsize=18); plt.yticks(fontsize=18)plt.xlabel(r"$f/f_1$", fontsize=15)plt.title(u"狭窄带通滤波器频谱特性与采样频率fs的关系", fontsize=15)plt.legend()plt.show()
- 信号处理小结(2):滤波器
- 信号处理——滤波器
- 信号处理小结(1)
- matlab自带滤波器函数小结(图像处理)
- matlab自带滤波器函数小结(图像处理)
- matlab自带滤波器函数小结(图像处理)
- matlab自带滤波器函数小结(图像处理)
- 信号处理学习笔记之自适应滤波器
- UNIX信号小结(2)
- LinuxC信号及信号处理(2)
- 信号、系统与滤波器设计(matlab)
- 信号处理理解及滤波器&窗函数原理
- 模拟信号处理电路:有源滤波器和电压比较器
- [信号处理小结系列2]数学到底有多大用?
- 信号处理小结(3):傅氏算法
- linux-0.11内核 信号处理小结
- [信号处理小结系列1]信号和信息
- <RC一阶电路在正弦信号下的响应——滤波器小结>
- void BubbleSort(int *a,int n)
- Android-Widget应用详解
- int checkCPUendian(){
- 我的第二次面试经历
- android 毕设点滴之显示进度条(二)
- 信号处理小结(2):滤波器
- String,Number原型扩展:保留指定的小数位数
- VS2008专业版过期的解决办法!
- mfc 窗口最前端显示 及 最大化 最小化
- 大学规划
- Service,BroadCast使用实例
- Linux 常用Shell
- 大型机汇编(mainframe assembler/HLASM)之S0C4解读
- 黑马程序员之C#学习笔记:数据库char 和nchar 、varchar 和nvarchar 的区别