用MATLAB设计FIR滤波器

  • 滤波器
    • 滤波器定义
    • 滤波器种类
  • 滤波器设计
    • 滤波器设计要求
    • Matlab程序设计滤波器
    • 利用Matlab工具箱设计滤波器
  • 总结

滤波器

滤波器定义

“滤波器(filter),是一种用来消除干扰杂讯的器件,将输入或输出经过过滤而得到纯净的直流电。对特定频率的频点或该频点以外的频率进行有效滤除的电路,就是滤波器,其功能就是得到一个特定频率或消除一个特定频率。”

滤波器种类

滤波器按照频率来分类,可分为高通、低通、带通、带阻以及全通滤波器,根据所需选择合适滤波器。

滤波器设计

滤波器的设计方法可分为两大类,一类是IIR,另一类是FIR。对于FIR的设计,一般可以采用等波纹以及窗的方法。

滤波器设计要求

采样频率50khz,带通滤波器,通带15KHz,阻带20KHz,阻带衰减50dB,用凯撒窗设计带通滤波器。

Matlab程序设计滤波器

首先在Matlab中设置所需参数:

fs = 50000;
T = 1/fs;
L = 4000;
t = (0:L-1)*T;

然后从r32文件中读取信号数据:

filename=['文件路径'];
fid=fopen(filename,'r');
Na=4000;
dat=fread(fid,[32,Na],'float');
data=dat(1,:); %data即为所导入信号

绘制信号时域图:

plot(t,data)

得到:

再对其进行FFT:

NFFT = 2^nextpow2(L);
Y = fft(data,NFFT)/L;
f=fs/2*linspace(0,1,NFFT/2+1);
figure
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-sided Amplitude Spectrum of y(t)')
xlabel('Frequency(Hz)')
ylabel('|Y(f)|')

得到:

设计滤波器:

fs = 50000;
f = [13000 15000 20000 22000];
dev = [0.01 0.02 0.01];
a = [0 1 0];
[n,wn,beta,ftype] = kaiserord(f,a,dev,fs);
b = fir1(n,wn,'bandpass');
freqz(b)

得到滤波器的幅值相位图:

所设计滤波器的分子系数存于b中,使所给信号通过所设计的滤波器,所用程序如下:

d=filter(b,1,data);
plot(t,d)

得到滤波后的信号时域图:

对其进行FFT:

Y _af= fft(d,NFFT)/L;
f_af=fs/2*linspace(0,1,NFFT/2+1);
figure
plot(f_af,2*abs(Y_af(1:NFFT/2+1)))
xlabel('Frequency(Hz)')

得到:

利用Matlab工具箱设计滤波器

另外,还有一种更加快捷的设计方法,即使用Matlab自带的工具箱filterDesigner来设计滤波器:
在Matlab的命令行窗口中输入filterDesigner,得到如下窗口:

通过选择设置,可以得到滤波器的系数,以本题为例:

其系数如下:

可对其到处头文件,进行数据处理。

总结

本人对于数字信号处理这门课的学习比较冲忙,对于很多知识点都是比较模糊,希望在后续所需时能够进一步的加深理解。
在FIR滤波器设计的过程中,遇到一个比较困惑的点是,根据其他的案例,滤波器系数是包含分子系数以及分母系数,但本例产生的滤波器仅含分母系数,比较困惑,请大佬们指教!

用MATLAB设计FIR滤波器相关推荐

  1. fir fpga 不同截止频率_用MATLAB设计FIR滤波器的方法

    用MATLAB设计FIR滤波器的方法 摘  要 介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法.FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计 ...

  2. 用matlab设计fir高阶滤波器,用matlab设计fir滤波器的三种方法.doc

    用matlab设计fir滤波器的三种方法.doc 用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法摘要介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法程序设计法.FDATO ...

  3. matlab凯塞窗设计,转载:用MATLAB设计FIR滤波器的方法解析

    介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法.FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计的滤波器应用到一个混和正弦波信号,以验证滤波器的 ...

  4. matlab 设计出滤波器使用,用MATLAB设计FIR滤波器的方法解析

    介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法.FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计的滤波器应用到一个混和正弦波信号,以验证滤波器的 ...

  5. matlab fir滤波器程序,使用MATLAB设计FIR滤波器

    1.      采用fir1函数设计,fir1函数可以设计低通.带通.高通.带阻等多种类型的具有严格线性相位特性的FIR滤波器.语法形式: b = fir1(n, wn) b = fir1(n, wn ...

  6. matlab编程设计fir滤波器,用MATLAB设计FIR滤波器

    滤波器 滤波器定义 "滤波器(filter),是一种用来消除干扰杂讯的器件,将输入或输出经过过滤而得到纯净的直流电.对特定频率的频点或该频点以外的频率进行有效滤除的电路,就是滤波器,其功能就 ...

  7. matlab的FIR滤波器设计

    1.matlab设计fir滤波器的方法 matlab可以使用fir1函数设计低通.高通.低通.带通等具有严格线性相位特性的滤波器. fir1函数的几种语法如下: b=fir1(n,wn);b=fir1 ...

  8. 基于MATLAB的FIR滤波器的设计及应用(图像去噪)

    基于MATLAB的FIR滤波器的设计及应用(图像去噪) 一.实现功能 1.学会MATLAB的使用,掌握MATLAB的程序设计方法: 2.掌握数字信号处理的基本概念.基本理论和基本方法: 3. 在MAT ...

  9. 长时间数据流的信号滤波处理——基于MATLAB的FIR滤波器设计(1)

    背景 对于任意一个场景,获取到的信号都是经过噪声污染过的,一些简单的加性噪声可以通过统计的特性进行滤除,而对于一些乘性的噪声,只能通过滤波进行滤除. 在信号处理中,信号滤波会广泛使用.在做研究分析信号 ...

  10. fir滤波器等纹波matlab,基于Matlab的FIR滤波器设计与实现

    基于Matlab的FIR滤波器设计与实现 一.摘要 前面一篇文章介绍了通过FDATool工具箱实现滤波器的设计,见"基于Matlab中FDATool工具箱的滤波器设计及相关文件的生成&quo ...

最新文章

  1. .9文件,展示后显示黑条问题的解决
  2. 无线网络会杀死固网? 不可能的事情
  3. RK3399如何选择系统呢?
  4. 云服务器+开发板搭建直播系统,自建流媒体服务器开直播
  5. Windows Mobile中实现统计图形的绘制(C#版,柱状图)
  6. 你要知道动机何在吗?
  7. 华为手机EMUI换鸿蒙,华为手机3月全面切换鸿蒙 EMUI 11或为安卓内核绝唱
  8. 从fragment启动另一个fragment
  9. 业界分享 | Embedding技术在商业搜索与推荐场景的实践
  10. SIPp 安装及使用
  11. 抖音源码有什么奥秘?抖音为什么能推动短视频开发的热度
  12. 恒讯科技分享:rust服务器搭建教程
  13. 《IT行业职位介绍-搞懂高级程序员、架构师、技术总监、CTO从薪资到技能的区别》
  14. pytorch自定义Dataset,torch加载自己的numpy数据集,torch-cnn训练numpy进行回归
  15. 基于51单片机的波形发生器
  16. 《诗经·王风·黍离》
  17. 出版一本书可以赚多少钱_今年出版5本书
  18. android 钉钉考勤日历,Flutter仿钉钉考勤日历
  19. Maya 交互式播放
  20. Java_笛卡尔积计算

热门文章

  1. 1. C语言的第一个程序
  2. 史上最全的全国特产一览表,到哪就买当地最正宗的特产!!!
  3. day2 标识符 字面值 变量 数据类型
  4. 计算机C盘怎么转到D盘,电脑c盘格式化会怎样_电脑c盘怎么移到d盘
  5. Attention-Based View Selection Networks for Light-Field Disparity Estimation论文阅读
  6. 纯字母域名批量注册的详细步骤
  7. 解决百度推送not_same_site的问题
  8. 面向对象:只愿得一人心,白首不分离
  9. ERROR 1449 (HY000)
  10. 【技术】BootStrapTable 滚动条控制