MATLAB中buttord的使用

MATLAB中buttord的使用

我看网上很多对于buttord函数的使用都不太清楚,我也是doc了一些MATLAB里面的buttord函数才知道的。

在这里插入图片描述

前半段代码的解释

有一个很关键的问题是信号的采样频率是1kHz,但是在实际归一化的过程中使用的是500Hz。这个500Hz实际上是奎因斯特频率
在这里插入图片描述

其实大家看看时域采样定理就可以知道,Nyquist频率实际上是限带信号的原始最高频率,就是那个Wm/2*pi(角频率转化成频率)。所以采样信号频率的1/2是信号真正的最高频率,我们就是要对 0~这样一个频率 进行滤波。

150/500中的150是阻带中的某一个任意的频率(注意这里我的表述),然后我们定义了Rs=60dB(ripple stopband),意思就是我们把magnitude(大小,量级)下降了60分贝定义为到达这个任意频率,那150Hz就是下降到60dB对应的那个频率点。Rp=3dB(ripple passband),意思是我们在通带的时候,magnitude的波动最多是3dB。
也就是说:Ws并不是真实的截止频率,只是截止频率后面阻带上的某一个点
考虑一下截止频率的定义:下降3dB的点,那个Wn才是真正截止频率归一化以后的点。如果是带通或者带着的话,Wn就是一个范围
你用0.081*500=40.5192,这个频率非常接近我们给的0~40的范围。换句话来说40Hz是0dB下降的点,而40.5192就是3dB下降的点,就是真正的截止频率

如果你用的是理想滤波器,那0dB的点和3dB的点没有区别,因为是一条直线直接下来,而butterworth滤波器就是一个缓慢下降的过程。当然这里的n=5,其实已经很接近理想滤波器了,所以差别不大。
其实你仔细观察一下会发现,(Ws,Rs)其实只是滤波器曲线上的一个点,它的目的就是为了确定曲线的相关参数,当然也可以把这条曲线画出来。

在这里插入图片描述

如果你更改(Ws,Rs)这个点,让曲线变得平缓一些,那Wn就会相应的增大。
在这里插入图片描述
输出结果
在这里插入图片描述

后半段代码的解释

butter(n,Wn)就是生成一个n阶buttonworth滤波器,Wn是截止频率。z,p,k分别是zero,pole,gain 即零点,极点和增益。然后使用zp2sos (second-order sections)二阶部分 虽然我也不太理解是什么意思。
然后直接freqz()画图就可以了。512是default画图点数,如果取得少连续的曲线就会变成折线。1000是采样频率。

  • 49
    点赞
  • 183
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值