椭圆滤波器

椭圆滤波器

椭圆滤波器(Elliptic filter)又称考尔滤波器(Cauer filter),是在通带和阻带等波纹的一种滤波器。椭圆滤波器相比其他类型的滤波器,在阶数相同的条件下有着最小的通带和阻带波动。它在通带和阻带的波动相同,这一点区别于在通带和阻带都平坦的巴特沃斯滤波器,以及通带平坦、阻带等波纹或是阻带平坦、通带等波纹的切比雪夫滤波器。

1、 椭圆滤波器传递函数

T n ( s ) = B n ( 0 ) B n ( s / ω 0 ) T_n(s) = \frac{B_n(0)}{B_n(s/\omega_0)} Tn(s)=Bn(s/ω0)Bn(0)

其中 ω 0 \omega_0 ω0为期望截至频率

2、特性

从传递函数来看,巴特沃斯和切比雪夫滤波器的传递函数都是一个常数除以一个多项式, 为全极点网络, 仅在无限大阻带处衰减为无限大. 而椭圆函数滤波器在有限频率上既有零点又有极点。极零点在通带内产生等波纹, 阻带内的有限传输零点减少了过渡区, 可获得极为陡峭的衰减曲线。也就是说在阶数相同的条件下,椭圆滤波器相比于其他类型的滤波器,能获得更窄的过渡带宽和较小的阻带波动, 就这点而言, 椭圆滤波器是最优的。它陡峭的过渡带特性是用通带和阻带的起伏为代价来换取的,并且在通带和阻带的波动相同,这一点区别于在通带和阻带都平坦的巴特沃斯滤波器,以及通带平坦、阻带等波纹或是阻带平坦、通带等波纹的切比雪夫滤波器。

1、椭圆低通滤波器是一种零、极点型滤波器,它在有限频率范围内存在传输零点和极点。

2、椭圆低通滤波器的通带和阻带都具有等波纹特性,因此通带,阻带逼近特性良好。

3、对于同样的性能要求,它比前两种滤波器所需用的阶数都低,而且它的过渡带比较窄。
但是椭圆滤波器传输函数是一种较复杂的逼近函数,利用传统的设计方法进行电路网络综合要进行繁琐的计算, 还要根据计算结果进行查表, 整个设计, 调整都十分困难和繁琐。而用MATLAB设计椭圆滤波器可以大大简化设计过程。

python函数介绍

scipy.signal.iirfilter(N, Wn, rp=None, rs=None, btype='band', analog=False, ftype='butter', output='ba', fs=None)

参数:
N:int  过滤器的顺序。

Wn:array_like  标量或长度为2的序列给出了临界频率(由norm参数定义)。对于模拟滤波器,Wn是角频率(例如rad /s)。

rp:float, 可选参数
对于Chebyshev和椭圆滤波器,可在通带中提供最大纹波。(db)

rs:float, 可选参数
对于切比雪夫和椭圆滤波器,在阻带中提供最小的衰减。(db)

btype:{‘lowpass’, ‘highpass’, ‘bandpass’, ‘bandstop’}, 可选参数
过滤器的类型。默认值为‘lowpass’。

analog:bool, 可选参数
如果为True,则返回一个模拟滤波器,否则返回一个数字滤波器。

ftype:str, 可选参数
设计的IIR滤波器的类型:{Butterworth :‘butter’, Chebyshev I :‘cheby1’, Chebyshev II :‘cheby2’, Cauer/elliptic:‘ellip’, Bessel/Thomson:‘bessel’}

output:{‘ba’, ‘zpk’, ‘sos’}, 可选参数
输出类型:分子/分母(‘ba’),pole-zero(‘zpk’)或second-order部分(‘sos’)。默认值为‘ba’。

fs:float  可选参数     数字系统的采样频率。
对于数字滤波器,Wn与fs的单位相同。默认情况下,fs为2 half-cycles /sample,因此将它们从0标准化为1,其中1是奈奎斯特频率。 (因此Wn在half-cycles /样本中。)

返回值:
b, a:ndarray,ndarray
IIR滤波器的分子(b)和分母(a)多项式。仅在以下情况下返回output='ba'。

z, p, k:ndarray,ndarray,float
IIR滤波器传递函数的零点,极点和系统增益。仅在以下情况下返回output='zpk'。

sos:ndarray
IIR滤波器的Second-order个部分表示。仅在以下情况下返回output=='sos'。

python例子

生成一个从50 Hz到200 Hz的17th-order Chebyshev II模拟带通滤波器,并绘制频率响应:

from scipy import signal
import matplotlib.pyplot as plt
import numpy as np

b, a = signal.iirfilter(17, [2*np.pi*50, 2*np.pi*200], rs=60,
                        btype='band', analog=True, ftype='cheby2')    
w, h = signal.freqs(b, a, 1000)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.semilogx(w / (2*np.pi), 20 * np.log10(np.maximum(abs(h), 1e-5)))
ax.set_title('Chebyshev Type II bandpass frequency response')
ax.set_xlabel('Frequency [Hz]')
ax.set_ylabel('Amplitude [dB]')
ax.axis((10, 1000, -100, 10))
ax.grid(which='both', axis='both')
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,你可以使用OpenCV库来实现Gabor滤波器。首先,你需要安装OpenCV库,你可以使用以下命令来安装它: ``` pip install opencv-python ``` 安装完成后,你可以按照以下步骤来实现Gabor滤波器: 1. 导入所需的库和模块: ```python import cv2 import numpy as np from matplotlib import pyplot as plt ``` 2. 定义Gabor滤波器的参数: ```python ksize = 31 # 滤波器的大小,必须为奇数 sigma = 4 # 高斯函数的标准差 theta = 0 # Gabor函数的法线到平行条纹的方向(以弧度表示) lambd = 10 # 正弦因子的波长 gamma = 0.5 # Gabor函数支持的椭圆度 psi = 0 # 相位偏移 ``` 3. 创建一个Gabor滤波器: ```python kernel = cv2.getGaborKernel((ksize, ksize), sigma, theta, lambd, gamma, psi, ktype=cv2.CV_32F) ``` 4. 加载图像并将其转换为灰度: ```python image = cv2.imread('image.jpg') gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) ``` 5. 对灰度图像进行Gabor滤波: ```python filtered_image = cv2.filter2D(gray, cv2.CV_8UC3, kernel) ``` 6. 显示原始图像和滤波后的图像: ```python plt.subplot(1, 2, 1), plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) plt.title('Original Image'), plt.xticks([]), plt.yticks([]) plt.subplot(1, 2, 2), plt.imshow(filtered_image, cmap='gray') plt.title('Filtered Image'), plt.xticks([]), plt.yticks([]) plt.show() ``` 以上步骤将显示原始图像和经过Gabor滤波后的图像。请注意,你可以根据需要调整Gabor滤波器的参数来获得不同的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [图像处理:Gabor滤波器简介以及python实现](https://blog.csdn.net/Aaaha_jasper/article/details/128057704)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值