摘  要 介紹了利用MATLAB信號處理工具箱進行FIR濾波器設計的三種方法:程序設計法、FDATool設計法和SPTool設計法,給出了詳細的設計步驟,並將設計的濾波器應用到一個混和正弦波信號,以驗證濾波器的性能。

關鍵詞  MATLAB,數字濾波器,有限沖激響應,窗函數,仿真

1 前言

數字濾波器是一種用來過濾時間離散信號的數字系統,通過對抽樣數據進行數學處理來達到頻域濾波的目的。根據其單位沖激響應函數的時域特性可分為兩類:無限沖激響應(IIR)濾波器和有限沖激響應(FIR)濾波器。與IIR濾波器相比,FIR的實現是非遞歸的,總是穩定的;更重要的是,FIR濾波器在滿足幅頻響應要求的同時,可以獲得嚴格的線性相位特性。因此,它在高保真的信號處理,如數字音頻、圖像處理、數據傳輸、生物醫學等領域得到廣泛應用。

2 FIR濾波器的窗函數設計法    FIR濾波器的設計方法有許多種,如窗函數設計法、頻率采樣設計法和最優化設計法等。窗函數設計法的基本原理是用一定寬度窗函數截取無限脈沖響應序列獲得有限長的脈沖響應序列,主要設計步驟為:

(1) 通過傅里葉逆變換獲得理想濾波器的單位脈沖響應hd(n)。

(2) 由性能指標確定窗函數W(n)和窗口長度N。

(3) 求得實際濾波器的單位脈沖響應h(n), h(n)即為所設計FIR濾波器系數向量b(n)。

(4) 檢驗濾波器性能。

本文將針對一個含有5Hz、15Hz和30Hz的混和正弦波信號,設計一個FIR帶通濾波器,給出利用MATLAB實現的三種方法:程序設計法、 FDATool設計法和SPTool設計法。參數要求:采樣頻率fs=100Hz,通帶下限截止頻率fc1=10 Hz,通帶上限截止頻率fc2=20 Hz,過渡帶寬6 Hz,通阻帶波動0.01,采用凱塞窗設計。

2  程序設計法

MATLAB信號處理工具箱提供了各種窗函數、濾波器設計函數和濾波器實現函數。本文的帶通濾波器設計及濾波程序如下:

[n,Wn,beta,ftype]=kaiserord([7 13 17 23],[0 1 0],[0.01 0.01 0.01],100);

%得出濾波器的階數n=38,beta=3.4

w1=2*fc1/fs; w2=2*fc2/fs;%將模擬濾波器的技術指標轉換為數字濾波器的技術指標

window=kaiser(n+1,beta);%使用kaiser窗函數

b=fir1(n,[w1 w2],window);使用標准頻率響應的加窗設計函數fir1

freqz(b,1,512);%數字濾波器頻率響應

t = (0:100)/Fs;

s = sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);%混和正弦波信號

sf = filter(b,1,s);%對信號s進行濾波

程序執行的結果如圖1所示:

(1)濾波器幅頻特性和相頻特性                                          (2)濾波前后的波形

圖1 濾波器特性和濾波效果圖

4 FDATool設計法

FDATool(Filter Design & Analysis Tool)是MATLAB信號處理工具箱專用的濾波器設計分析工具,操作簡單、靈活,可以采用多種方法設計FIR和IIR濾波器。在MATLAB命令窗口輸入FDATool后回車就會彈出FDATool界面。

4.1 帶通濾波器設計

已知濾波器的階數n=38,beta=3.4。本例中,首先在Filter Type中選擇Bandpass;在Design Method選項中選擇FIR Window,接着在Window選項中選取Kaiser,Beta值為3.4;指定Filter Order項中的Specify order為38;采樣頻率Fs=100Hz,截止頻率Fc1=10Hz,Fc2=20Hz。設置完以后點擊窗口下方的Design Filter,在窗口上方就會看到所設計濾波器的幅頻響應,通過菜單選項Analysis還可以看到濾波器的相頻響應、組延遲、脈沖響應、階躍響應、零極點配置等。設計完成后將結果保存為kaiser15.fda文件。

4.2  Simulink仿真

在Simulink環境下,將濾波器文件kaiser15.fda導入Digital Filter Design模塊,輸入信號為s(t)=sin(10πt)+sin(30πt)+sin(60πt),生成的仿真圖和濾波效果如圖2所示。

(1)Simulink仿真圖                                         (2)濾波前后的離散波形

圖2 Simulink仿真圖和濾波效果圖

5 SPTool設計法

SPTool是MATLAB信號處理工具箱中自帶的交互式圖形用戶界面工具,它包含了信號處理工具箱中的大部分函數,可以方便快捷地完成對信號、濾波器及頻譜的分析、設計和瀏覽。在本例中按以下步驟完成濾波器的設計和濾波:

創建並導入信號源。

在MATLAB命令窗口輸入命令:

Fs=100;t = (0:100)/Fs;

s = sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);

此時,變量Fs、t、s將顯示在workspace列表中。在命令窗口鍵入Sptool,將彈出Sptool主界面,如圖3所示;點擊菜單File/Import將信號s導入並取名為s。

(2)單擊Filters列表下的New,按照參數要求設計出濾波器filt1,具體步驟類似於3.2.1。

(3)將濾波器filt1應用到s信號序列。分別在Signals、Filters、Spectra列表中選擇s、filt1、mtlbse,單擊Filters列表下的Apply按鈕,在彈出的Apply Filter對話框中將輸出信號命名為sin15hz。

(4)進行頻譜分析。在Signals中選擇s,單擊Spectra下的Create按鈕,在彈出的Spectra Viewer界面中選擇Method為FFT,Nfft=512,單擊Apply按鈕生成s的頻譜spect1。同樣的步驟可以生成信號sin15hz的頻譜spect2。

分別選中信號s、sin15hz、spect1、spect2,單擊各自列表下方的View按鈕,即可觀察他們的波形,如圖4所示。

圖3 SPTool主界面                                        圖4 濾波前后的時域波形和頻域特性

由圖4可以看出,帶通濾波器filt1使輸入信號s中頻率為15hz的正弦波信號通過,而將頻率為5hz和30hz的正弦波信號大大衰減。

6 結束語

本文通過一個設計實例,介紹了利用MATLAB實現 FIR濾波器設計與濾波的三種方法,從仿真結果可以看出它們均可以達到技術指標要求,而且方法簡單、快捷,大大減輕了工作量。濾波器的設計工作完成后,可以借助於MATLAB的export操作導出所設計濾波器的系統函數H(z)。由於MATLAB具有強大的接口功能,仿真后的結果可以很方便的移植到 DSP、CPLD或FPGA等器件中。在實際應用中,只需按要求修改濾波器參數,並對程序作較少的改動,即可實現不同截止頻率的FIR濾波器,實用性較強。

參考文獻:

1  董長虹等. MATLAB信號處理與應用.北京:國防工業出版社,2005

2  [美] M.H.海因斯 著,張建華等 譯.數字信號處理.北京:科學出版社,2002

3  張葛祥,李 娜. MATLAB仿真技術與應用.北京:清華大學出版社,2003

4  樓順天,李博菡.基於MATLAB的系統分析與設計.西安:西安電子科技大學出版社,1998

matlab fir工具箱,用MATLAB信號處理工具箱進行FIR濾波器設計的三種方法相关推荐

  1. quartus ii matlab,基於Quartus II和MATLAB的FIR濾波器設計與仿真(二)

    接上文  基於Quartus II和MATLAB的FIR濾波器設計與仿真(一): 3  QuartusII 調用 IP 核生成 FIR 濾波器模塊 在 Quartus II 中, Altera 提供了 ...

  2. matlab ellip,IIR濾波器設計(調用MATLAB IIR函數來實現) | 學步園

    % IIR濾波器設計 % 目的:設計一個採樣頻率為1000Hz.通帶截止頻率為50Hz.阻帶截止頻率為100Hz的低通濾波器,並要求通帶最大衰減為1dB,阻帶最小衰減為60dB. clc;clear; ...

  3. fir数字滤波器MATLAB设计,基于FIR数字滤波器的Matlab设计

    摘 要 :阐迷了FIR数字浦波器的窗a数设计方法,并利用Matlab语言实现了浦波器的设计与仿真.Matlab语言可以 方便.快捷地设计具有严格线性相位的FIR系跳,可节省大It的编程时间,提高编租效 ...

  4. matlab像素值求和,matlab像素值及統計

    1.像素數據值 impixel函數可以返回用戶指定的圖像像素的顏色數據值,impixel函數可以返回選中像素或者是像素集的數據值,可以直接將像素坐標作為該函數的輸入參數,或用鼠標選中像素.imshow ...

  5. linux 信号sigabrt,關於Linux中的SIGABRT信號

    SIGABRT是中止一個程序,它可以被捕捉,但不能被阻塞.處理函數返回后,所有打開的文件描述符將會被關閉,流也會被flush.程序會結束,有可能的話還會core dump. 當程序調用abort(3) ...

  6. 直接反投影 matlab,濾波反投影重建算法(FBP)實現及應用(matlab)

    濾波反投影重建算法實現及應用(matlab) 1. 濾波反投影重建算法原理 濾波反投影重建算法常用在CT成像重建中,背后的數學原理是傅立葉變換:對投影的一維傅立葉變換等效於對原圖像進行二維的傅立葉變換 ...

  7. FIR数字滤波器的FPGA实现(二)-串行FIR滤波器设计(1)

    (二)FIR数字滤波器的FPGA实现-串行FIR滤波器设计 文章目录 (二)FIR数字滤波器的FPGA实现-串行FIR滤波器设计 0 串行FIR滤波器基本原理 1 基于移位寄存器的串行 FIR 滤波器 ...

  8. matlab滤波器设计工具箱带阻滤波器,用matlab信号处理工具箱进行fir滤波器设计的三种方法...

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

  9. fir抽取滤波器matlab,Xilinx FPGA之抽取FIR滤波器的实现

    过去半年有几位客户请我帮助他们设计和实现数字下变频器所用的降采样(即"抽取")滤波器,这种滤波器在软件无线电与数据采集类应用中都很常见.这项工作即便对于经验丰富的设计师也不是一件小 ...

最新文章

  1. [RHEL5企业级Linux服务攻略]--第2季 Samba服务全攻略答疑贴
  2. 设置asp.net网站的信任等级
  3. 闭包,sync使用细节
  4. 面试问题整理笔记系列 一 Java容器类
  5. Page_Load的问题
  6. 连载一:Oracle迁移文档大全
  7. 《软件工程》课程改进意见
  8. 大数据之-Hadoop3.x_MapReduce_ReduceTask源码解析---大数据之hadoop3.x工作笔记0127
  9. Node——设置响应报文头实现下载
  10. 云视频安防监控解决方案
  11. JupyterNotebook中更新pip以及使用pip install安装lightgbm
  12. Retinex网络模型学习笔记
  13. 流媒体弱网优化之路(NACK)——纯NACK方案的优化探索
  14. Flink1.10.1编译hadoop2.7.2 编译flink-shaded-hadoop-2-uber
  15. oracle 数据分列,oracle怎么按照范围分列!求高手帮忙.
  16. 如何压缩图片200k以下?
  17. 【bzoj4372】烁烁的游戏
  18. 响应式Web程序设计【15】
  19. html播放h265,Web 播放 H.265视频
  20. eclipse总是运行之前的代码,控制台只显示原先的结果

热门文章

  1. pandas使用isna函数和any函数检查dataframe是否包含缺失值、整体是否有缺失值,不区分行列(check if dataframe contains any missing values
  2. R语言sys方法:sys.chmod函数改变指定文件的权限、Sys.Date函数返回系统的当前日期、Sys.time函数返回系统的当前时间
  3. pandas使用pct_change函数计算数据列的百分比变化:计算当前元素和前一个元素之间的百分比变化(包含NaN值的情况以及数据填充方法)
  4. 深度学习之核心要素:输入输出、目标函数、前向传播、后向传播、学习率、梯度下降
  5. R语言officer、flextable包生成word报告
  6. 基因测序3——三、四代测序技术来势汹汹,国产化仍在布局二代测序?
  7. PacBio如何获得又长又准确的reads
  8. 转录组测序和RNA-seq
  9. Third-generation sequencing and the future of genomics 第三代测序和基因组学的未来
  10. Java枚举意义在哪_java – 多个if-else或枚举 – 哪一个更好,为什么?