matlab 插值_如何确定插值滤波器的阶数

90f24d355ca1ff4ea876c06cdaa3e703.png

在信号处理中,滤波器的系数我们往往都是通过MATLAB来设计,只要我们知道滤波器的通带截止频率和阻带起始频率,就可以通过MATLAB中的fdatool(在MATLAB2020中使用filterDesigner)来设计滤波器了。

我们使用归一化的参数来设计,通带截止频率是025,阻带起始频率是0.3,通带内纹波是0.2,阻带衰减是60dB,参数设置如下:

d054cd0283343f086501810eb8640706.png

那么问题来了,对于插值滤波器,如何确定通带和阻带的频率呢?这就涉及到我们刚开始学习数字信号处理时的插值和抽取理论。当信号抽取时,在数字频率上,信号的频谱是展宽的,当信号插值时,在数字频率上,信号的频谱是压缩的。这里我们强调数字频率,不是模拟频率,因为100MHz的采样率去采中频10MHz、带宽1MHz的信号,那么抽取2倍后,这个信号的频率还是10MHz,带宽还是1MHz,那为什么说数字频率上频谱展宽了呢?因为数字频率的2pi对应采样率。

我们以信号处理书上这个经典的例子为例,原始信号的带宽是2pi/3,采样率是2pi,经过3倍抽取后,采样率由fs变为fs/3;而抽取后信号的采样率依旧对于数字域的2pi,因此原先的fs就对应6pi,信号带宽也就变成了2pi。

ea4b3c152390118aa5a3b7724cf1a6af.png

而插值滤波器则刚好相反,对于3倍的插值滤波器,信号带宽在数字频率上,缩小了1/3。也就是原来0~pi的区间缩小到0~pi/3,因此信号的截止频率就是pi/3,我们在设计滤波器时,直接指定截止频率是pi/3即可,至于阻带起始频率,我们可以设计的比通带截止频率稍大一些即可,同时还要考虑滤波器阶数,如果过渡带太窄了,滤波器阶数会太高。像我们上面设计的那个滤波器,正好可以适用于4倍插值滤波器。

这里我们再提供一种解决方案,这种方法也是我强烈推荐的,就是当我们对一种设计没有头绪时,可以参考mathworks给出的设计。从哪参考呢?当然是MATLAB程序。我们知道Matlab的一个强大之处在于给我们提供了很多API可以调用,为我们节省了不少时间,而且大多数的函数我们都是可以看到源码的。比如我们今天所说的插值滤波器,可以直接使用resample函数,比如要对向量sig插值4倍,就可以直接使用sig2 = resample(sig, 4, 1)。这次我们再打开resample这个函数,可以看到:

4aa3c88a7052100d2f94e5e129a19083.png

这里的N是10,也就是说,如果是p倍插值,Matlab给出的插值滤波器阶数是2x10xp,也就是4倍插值滤波器对应阶数是80阶。再用firls来设计滤波器,最后再给滤波器加个kaiser窗。其实我们也可以直接使用fir2函数来设计,就是把图中高亮的行换成:

h = fir2(L - 1, [0 2*fc 2*fc 1], [1 1 0 0]);

fir2函数默认就是加了hamming窗的。使用这种方法设计的滤波器频响如下:

66aa2319b46960539c385a24ed0824ee.png

微信公众号:Quant_Times

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值