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下降的点,就是真正的截止频率
如果你用的是理想滤波器