首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在scipy.signal.filter_design.ellip中使用rp,rs和Wn参数?

如何在scipy.signal.filter_design.ellip中使用rp,rs和Wn参数?
EN

Stack Overflow用户
提问于 2012-02-14 16:44:40
回答 2查看 3.7K关注 0票数 1

我想尝试一下SciPy在scipy.signal.filter_design.ellip中的椭圆滤波器设计功能。我熟悉Octave中的过滤器设计功能,但我不知道如何使用它:

来自http://www.scipy.org/doc/api_docs/SciPy.signal.filter_design.html的文档

ellip(N,rp,rs,Wn,btype = 'low',模拟= 0,输出= 'ba')

椭圆(Cauer)数字和模拟滤波器设计。

描述:

设计了一个N阶低通数字或模拟椭圆滤波器,并以(B,A)或(Z,P,K)形式返回滤波器系数。

另见ellipord。

我理解N(订单),btype (低或高),模拟(真/假)和输出(ba对zpk)。

什么是rp,rs,Wn,它们应该如何工作?

根据我对Octave的经验,我猜想rp和rs是与允许的最大波纹有关的,并且Wn是一个权重或控制截止频率,但是这些工作是如何记录下来的,我找不到任何例子。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-16 14:35:59

我相信HYRY是对的。根据我使用Python克隆脚本的经验,除了糟糕的文档之外,它们工作得很好。是的,Rp和Rs分别是通带和阻带中允许的最大纹波。Wn是数字截止,或边缘频率。

因此.下面是一些代码,说明如何使用它复制mathworks用作示例的过滤器:

代码语言:javascript
复制
import pylab
import scipy
import scipy.signal
[b,a] = scipy.signal.ellip(6,3,50,300.0/500.0);

import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
plt.title('Digital filter frequency response')
ax1 = fig.add_subplot(111)
h,w = scipy.signal.freqz(b, a)
plt.semilogy(h, np.abs(w), 'b')
plt.semilogy(h, abs(w), 'b')
plt.ylabel('Amplitude (dB)', color='b')
plt.xlabel('Frequency (rad/sample)')
plt.grid()
plt.legend()
ax2 = ax1.twinx()
angles = np.unwrap(np.angle(w))
plt.plot(h, angles, 'g')
plt.ylabel('Angle (radians)', color='g')
plt.show()

对不起,这个格式太烂了,但是它很有效!你会注意到,频率标度和matlab显示的不一样,它只是化妆品而已。你得到的是:

票数 1
EN

Stack Overflow用户

发布于 2012-02-16 14:22:14

我认为这个函数和Octave或者MATLAB是一样的,所以你可以阅读MATLAB的文档。

http://www.mathworks.com/help/toolbox/signal/ref/ellip.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9280711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档