matlab使用firpm函数设计自定义响应的FIR数字滤波器

firpm的介绍请见matlab的官方技术文档。

以实例说明一下firpm的用法:

f = [0 0.3 0.4 0.6 0.7 1.0];
a = [0 1.0 0.0 0.0 0.5 0.5];
b = firpm(50,f,a);

[h,w] = freqz(b,1,512);
plot(f,a,w/pi,abs(h))
legend('Ideal','firpm Design')
xlabel 'Radian Frequency (\omega/\pi)', ylabel 'Magnitude'

结果如图:

要点:

1、f、a的长度相同

2、f、a的关系,可以理解为两两一组的分段函数。如 f 0 0.3时,a 0 1.0,则可见幅频响应基本均匀的线性增加到1.0中。

在f 0.7 1.0,a 0.5 0.5时,则可见幅频响应基本保持为0.5

3、在分段函数的间隙,在官方文档里认为是don't care,即为不需要考虑的部分。

4、firpm函数中的第一个参数为 FIR滤波器的长度N-1的值。图中滤波器的阶数为51阶。

5、貌似f里的值要单调递增,不能有重复的值。

6、f的曲线要连贯,如果跳度大容易导致震荡。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值