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的曲线要连贯,如果跳度大容易导致震荡。

猜你喜欢

转载自blog.csdn.net/leokingszx/article/details/80195577