FIR滤波器很多工科出身的人都不会陌生,在我们的学习和工作中,也常常需要设计FIR滤波器。因为FIR滤波器有两个特点:滤波器是稳定的以及具有线性相位。FIR滤波器在信号处理相关领域当然也包括本人所在的雷达信号处理领域有着广泛的应用。本文主要介绍MATLAB最常用的FIR滤波器设计方法之窗函数法。其他的方法将在另一章中介绍。

窗函数法是一种基础且普遍应用的FIR滤波器设计方法。首先需要根据性能指标(如主瓣宽度、旁瓣衰减等)确定适合的窗函数。 主瓣宽度、旁瓣衰减是一对情敌,想要主瓣宽度窄且旁瓣衰减大,那是电视剧里都不会出现的情况。实际中,需要根据自己的任务指标权衡。此外,还需要确定阶数。然后就可以用fir1函数设计滤波器了。

b=fir1(n,wn,'ftype',window)

其中:

b:我们设计的fir滤波器系数,长度为n+1;b跟过渡带的宽度有关,设计时根据性能要求确定。

n:滤波器的阶数。注意,b的长度为n+1。

wn:滤波器的截止频率,可以是一个标量或者多元素的向量。取值范围0

window:表示使用的窗函数,最常用的是汉明窗(Hamming)、汉宁窗(Hanning)、三角窗(bartlett、triang)、矩形窗(boxcar)、布莱克曼窗(Blackman)、chebwin(切比雪夫窗)、凯赛窗(Kaiser);默认是汉明窗(Hamming)。各种窗的差别主要在集中于主瓣的能量和分散在所有旁瓣的能量之比。

例如我们需要设计一个50阶,截止频率ω = 0.3π,使用汉明窗的低通滤波器。

b = fir1(50,0.3,'low',hamming(51));

freqz(b,1,512)

lowpass hamming

注意:窗函数长度和滤波器系数b的长度应一致。

改一下需求,需要设计一个50阶,通带为 0.3π

b = fir1(50,[0.3 0.6],'bandpass',chebwin(51,50));

freqz(b,1,512)

bandpass chebwin

对这个滤波器做个小测试。

fs = 200;%采样频率

f1 = 10;

f2 = 50;

f3 = 80;

t = linspace(0,1,fs);

x = 2*sin(2*pi*f1*t)+5*sin(2*pi*f2*t)+3*sin(2*pi*f3*t);

plot(abs(fft(x,512)));

title('原始信号频谱')

b = fir1(50,[0.3 0.6],'bandpass',chebwin(51,50));

y = filter(b,1,x);

figure;

plot(abs(fft(y,512)));

title('滤波后信号频谱')

原始信号

滤波后信号

可见频率为10Hz和80Hz的分量被滤除掉了。

用汉明窗(Hamming)、汉宁窗(Hanning)设计呢?如下图所示。

再来说一下ftype为'DC-0' | 'DC-1'的时候。举两个例子。

设计一个46阶,阻带为ω <0.4π,0.6π

bnd = [0.4 0.6 0.9];

b_0 = fir1(46,bnd,'DC-0');

fvtool(b_0,1);

DC-0

如果我们需要把上面的阻带换为通带呢?binggo!把ftype:DC-0换成ftype:DC-1 就可以了。

DC-0

把两个滤波器画在一起,如下图:

clc;clear;

bnd = [0.4 0.6 0.9];

b_0 = fir1(46,bnd,'DC-0');

b_1 = fir1(46,bnd,'DC-1');

h = fvtool(b_0,1,b_1,1);

legend(h,'DC-0','DC-1')

kaiser窗

Kaiser窗是一种最优化窗,具有很好的旁瓣抑制性能。

[n,Wn,beta,ftype] = kaiserord(f,a,dev,fs)

f是一个矢量,表示带的边缘频率。f的长度是a的长度*2-2。关于f和a定义了一个分段常数响应函数。下面会通过例子说明。范围为0~fs/2。

dev指定le通带纹波和阻带衰减。表示每个频带输出滤波器的频率响应与其期望值之间最大允许的偏差。

fs:采样频率Hz为单位。

比如设计一个通带为0~1KHz,阻带为1.5~4KHz,5%的通带纹波和阻带衰减为50dB的低通滤波器。

fsamp = 8000;

fcuts = [1000 1500];

mags = [1 0];

devs = [0.05 0.0035];

[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);

hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');

fvtool(hh,1);

再如设计一个带阻滤波器。

fsamp = 8000;

fcuts = [1000 1500 2500 3000 ];

mags = [1 0 1];

devs = [0.05 0.0035 0.05];

[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);

hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');

fvtool(hh,1);

下面我们分析一下这个滤波器。fsamp ,采样频率。

fcuts ,带边缘频率。fcuts 应小于fsamp/2。

mags = [1 0 1];

我们从上图中可以看到在0

其他的FIR滤波器设计方法在另一章中介绍。

fir 低通 matlab,MATLAB常用的FIR滤波器设计方法之窗函数法相关推荐

  1. matlab贝塞尔滤波器设计_DSP之窗函数法设计高通滤波器(MATLAB实现)

    窗函数法是设计滤波器比较简单的一种方法 不论是高通还是低通还是带通还是带阻滤波器,原理设计都是一样的 问题提出: 因为20lg0.01=-40 所以最小阻带衰减要小于-40,通过查表可知选择汉宁窗 假 ...

  2. [Matlab]FIR滤波器设计:(基本窗函数FIR滤波器设计)

    [Matlab]FIR滤波器设计:(基本窗函数FIR滤波器设计) ​ IIR滤波器主要设计方法先设计一个模拟低通滤波器,然后把它转化为形式上的数字滤波器.但对于FIR滤波器来说,设计方法的关键要求之一 ...

  3. FIR 基础应用 - AM 调幅波调制解调(FIR 低通滤波)

    本文链接:https://blog.csdn.net/qq_46621272/article/details/125334644 FIR 基础应用 - AM 调幅波调制解调(FIR 低通滤波) 文章目 ...

  4. c语言 汉宁窗,汉宁窗设计线性相位FIR低通数字滤波器.docx

    MACROBUTTON MTEditEquationSection2 SEQ MTEqn \r \h \* MERGEFORMAT SEQ MTSec \r 1 \h \* MERGEFORMAT S ...

  5. FIR 基础应用 - FM 调频波调制解调(FIR 低通滤波)

    本文链接:https://blog.csdn.net/qq_46621272/article/details/125337119 FIR 基础应用 - FM 调频波调制解调(FIR 低通滤波) 文章目 ...

  6. matlab 对图像进行低通滤波,matlab图像处理实现低通滤波

    matlab图像处理实现低通滤波 matlab图像处理实现低通滤波 clc; clear all; img=imread('lena.jpg'); img_noise = imnoise(img, ' ...

  7. 26、ADS使用记录之基于低通滤波匹配的超宽带功率放大器设计

    26.ADS使用记录之基于低通滤波匹配的超宽带功率放大器设计 低通滤波器匹配网络其实就是在滤波的基础上增加了一个阻抗变换的作用,其设计参数包含阻抗变换比.设计带宽参数等等,因为其良好的匹配特性所以经常 ...

  8. matlab中元器件三相lc filter滤波器,三相PWM逆变器输出LC滤波器设计方法.pdf

    ELECTRICDRIVE 2013 Vol.43 No.12 电气传动 2013年 第43卷 第12期 三相PWM逆变器输出LC滤波器设计方法 何亮,王劲松 (中国核动力研究设计院核反应堆系统设计技 ...

  9. 数字图像处理 空间域高斯低通滤波 MATLAB实验

    一.原理_空间域高斯低通滤波 高斯低通滤波是一种使用的去噪滤波,可用于去除高斯噪声,且几乎没有振铃现象. 二.步骤 (1)读入原图像lena.bmp并显示: (2)对原图像分别添加高斯噪声,并显示加噪 ...

最新文章

  1. 图灵奖得主Yann LeCun最新访谈!
  2. SpringMVC如何实现restful接口
  3. java 堆 是用_Java8元空间和堆使用
  4. rocketmq删除topic_RocketMq 快速入门教程
  5. 金融资讯数据服务平台建设实践
  6. CentOS8.1 搭建jenkins
  7. 根据条件返回相应值 decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)...
  8. delphi 获取打印机默认纸张_如何设置一台打印机打印不同尺寸的纸张
  9. 在html中播放链接视频,如何在我的python脚本中使用HTML5在网站链接中播放视频?...
  10. 双线性插值函数的形状
  11. jQuery、layer实现弹出层的打开、关闭功能实例详解
  12. Jmeter之BeanShell详解
  13. Keystore and keytool information
  14. Struts2 通配符
  15. win7修复计算机有密码,win7系统恢复选项密码
  16. 【抽奖】知网研学福利月卡
  17. 网站服务器配置在哪里设置,web服务器配置参数 web服务器建立网站具体步骤
  18. kotlin android 开源,Kotlin开源项目集合
  19. Kaleao推出基于ARM的服务器Kmax
  20. 惠州市有哪些学计算机的学校,惠州有哪些好学校?

热门文章

  1. VIT attention实现(paddle2.2)
  2. C语言小白(5)——结束语句
  3. Allegro 绘图参数的设置-设置图纸尺寸
  4. 1812. 方形牧场
  5. MTK进入工程模式方法
  6. linux 扫描wifi
  7. finalize机制
  8. 几个著名的3D测试场景与模型
  9. 1278_FreeRTOS_借助prvAddCurrentTaskToDelayedList接口理解delayed task
  10. 关于amazon亚马逊SP-API申请注册,amazon亚马逊SPAPI开发人员资料注册,amazon亚马逊Selling Partner API申请注册详细指导