在工程实际中遇到的信号经常伴有噪声,为了消除或减弱噪声,提取有用信号,必须进行滤波,能实现滤波功能的系统称为滤波器。严格地讲,滤波器可以定义为对已知的激励提供规定响应的系统,响应的要求可以在时域或频域内给定。滤波器的功能主要由其系统函数决定。滤波技术在通信测量、数据采集、控制系统及电力系统等领域得到了广泛的应用。滤波器的设计在这些领域中必不可少, 甚至是至关重要的环节, 其优劣将直接影响整个系统的性能。滤波器设计的关键是找到一个稳定可实现的逼近函数, 其频率特性满足所需滤波器的所有要求。虽然目前已有多种成熟的逼近函数(矩形窗等), 然而不论哪种逼近函数都需要进行非常繁琐的计算, 而且通过综合设计确定实现这一传递函数的电路及其元件值的过程也很复杂。MATLAB 中提供了丰富的用于模拟滤波器设计和数字滤波器设计的函数, 通过编程可以很容易实现低通、高通、带通、带阻滤波器, 并能画出滤波器的幅频、相频特性曲线。

MATLAB设计滤波器优点:

(1) 高效的数字计算方法及符号计算功能,使用户从繁杂的数学运算分析中解脱出来。

(2) 完备的图形处理功能,实现计算结果和编程的可视化。

(3) 友好的用户界面及接近数学表达式的自然化语言,使学习者易于学习和掌握。

(4) 功能丰富的应用工具箱,为用户提供了大量方便而实用的处理工具。

(5) Simulink动态建模与仿真系统,丰富而功能强大的器件库,提供了实时方便的仿真手段。

设计fir滤波器的一般步骤:

窗函数法设计及MATLAB 实现

FIR 滤波器目前常用的设计方法有窗函数法和频率采样法,窗函数法是从时域进行设计,而频率采样法是从频域进行设计。窗函数法由于简单、物理意义清晰,因而得到了较为广泛的应用。窗函数法设计的基本思想是:首先根据技术指标要求,选取合适的阶数N和窗函数的类型,使其幅频特性逼近理想滤波器幅频特性。其次,因为理想滤波器的是无限长的,所以需要对进行截断,数学上称这种方法为窗函数法[1]。

其中是希望逼近的滤波器的单位脉冲响应,是希望逼近的滤波器的幅频特性,是所设计的滤波器的单位脉冲响应,是窗函数。在截断的过程中要保证FIR滤波器的稳定性与线性相位的特性。由于截断效应使所设计滤波器的幅频特性存在误差,称之为吉布斯效应。最后,验证所设计的滤波器是否满足要求,若不满足,重新设计。常用的窗函数有矩形窗、三角窗、汉宁窗和凯塞窗等。窗函数的选择一般要满足以下三个条件[7]:

(1)具有较低的旁瓣幅度,尤其是第一旁瓣幅度。

(2)旁瓣幅度下降速度要快,以利于增加阻带衰减。

(3)主瓣宽度要窄,以获得较陡的过渡带。

FIR 滤波器的设计任务是选择有限长度的 h(n), 使函数H(ejω)满足技术要求。本文将针对一个含有 1000Hz 和 2000Hz 的正弦波信号, 设计一个FIR低通滤波器。参数要求: 采样频率 FS=8000Hz, 通带为 0~1200Hz, 阻带1600~4000Hz, 通带波纹为 1%,阻带波纹 10%。下面将利用程序设计法, SPTool 设计法和 FDA-Tool 设计法对上述滤波器进行设计。

  3.2.3程序设计法

       

在 Matlab 下设计 FIR 滤波器有多种函数, 如 fir1, fir2, firls, remez, fircls, firclsl, cremez, firrcos 。下面以 remez 函数设计滤波器[8]。

程序如下:

 Fs=; %采样频率

     f=[ ];

     a=[ ];

     dev=[0.01 0.1];

     [n,fo,ao,w]=remezord(f,a,dev,Fs); %估计滤波器的参数

  b=remez(n,fo,ao,w); %用 remez 函数设计滤波器

  freqz(b,,,Fs); %滤波器的频率响应, 如图 

  t=(:)/Fs;

  x=sin(*pi*t*)+sin(*pi*t*); %设置输入信号 x

  x1=filter(b,,x); %对信号 x 进行滤波,得输出信号 x1

  figure

  subplot();plot(t,x);grid;

  subplot();plot(t,x1);grid;

大毕设-MATLAB-滤波器的实现的更多相关文章

  1. 大毕设-matlab-AM调制解调

    博主大毕设关于数字下变频(DDC)的CUDA实现,预计工期比较长,所以留下一些文字记录. 主要分为两部分工作,Matlab仿真部分和CUDA实现. 由于很久没有仿真了,所以先用一个简单的AM调制仿真练 ...

  2. Matlab滤波器设计(转)

    滤波器设计是一个创建满足指定滤波要求的滤波器参数的过程.滤波器的实现包括滤波器结构的选择和滤波器参数的计算.只有完成了滤波器的设计和实现,才能最终完成数据的滤波. 滤波器设计的目标是实现数据序列的频率 ...

  3. 大毕设-MATLAB-FFT实现

    引用来自:http://blog.csdn.net/sinwel/article/details/8115673 %仿真参数中的含义 % Ts 表示间隔Ts时间采样,这个越小越接近连续信号,而实际上不 ...

  4. 大毕设-MATLAB-常用知识回顾

    要用到FIR滤波器和抽样器下面研究这两个的Matlab实现: Fir滤波器: matlab上fir滤波器的关键字是fir1 在command窗口输入help fir1出现帮助文档: >> ...

  5. matlab滤波器的设计

    求出濾波器的階數以及 3dB 截止頻率後,可用相應的 Matlab 函數計算出實現傳遞函數的分子分母係數來.巴特沃斯型濾波器是通帶內最大平坦.帶外單調下降型的,其計算命令是:[b,a] = butte ...

  6. 台大郭彦甫MATLAB教学-个人笔记(一)

    命令和一些特殊的变量 who:查看有哪些变量1. whos:可以查看变量的大小.字节和类型等资料. clear:如果单独使用则是清空所有命令,若后面跟着一个变量名称则为删除此变量. clc:清空命令行 ...

  7. 基于FPGA的音频信号的FIR滤波(Matlab+Modelsim验证)

    1 设计内容 本设计是基于FPGA的音频信号FIR低通滤波,根据要求,采用Matlab对WAV音频文件进行读取和添加噪声信号.FFT分析.FIR滤波处理,并分析滤波的效果.通过Matlab的分析验证滤 ...

  8. matlab中图像处理常见用法

    一. 读写图像文件 1. imread imread函数用于读入各种图像文件,如:a=imread('e:/w01.tif') 注:计算机E盘上要有w01相应的.tif文件. 2. imwrite i ...

  9. FIR滤波器设计

    FIR滤波器的优越性: 相位对应为严格的线性,不存在延迟失真,仅仅有固定的时间延迟: 因为不存在稳定性问题,设计相对简单: 仅仅包括实数算法,不涉及复数算法,不须要递推运算,长度为M,阶数为M-1,计 ...

随机推荐

  1. Python IDE PyCharm的基本快捷键和配置简介

    快捷键 1.编辑(Editing)Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完成Ctr ...

  2. LAN-LAN FREE-SERVER FREE

    注:本文转自http://taotao1240.blog.51cto.com/731446/839702 CU上有个板块叫“存储备份”,可见存储和备份是紧紧联系的.在看备份的时候,经常能看到LAN f ...

  3. Python基础篇【第6篇】: Python装饰器

    装饰器 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类, ...

  4. Microsoft Visual Studio has encountered a problem

    VS 2010 断点调试的时候,一运行到断点就报这个错误"Visual Studio has encountered a problem and needs to close", ...

  5. peer not authenticated error

    问题背景 系统:OS X El Capitan,10.11.2 IDE:Android Studio 2.0 Preview Java:1.8.0_65 Gradle:2.3 clone了代码后,在i ...

  6. Python-3 语法

    #1 Tab键: 1)控制缩进 2)IDLE智能补全 #2 =等号: 1)=:表示赋值 2)==:表示判断 #3 流程图: print('..........小甲鱼_1..........') tem ...

  7. 初识Lucene.net

    最近想提高下自己的能力,也是由于自己的项目中需要用到Lucene,所以开始接触这门富有挑战又充满新奇的技术.. 刚刚开始,只是写了个小小的demo,用了用lucene,确实很好   创建索引 Data ...

  8. c++学习--面向对象一实验

    实验内容 一 建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度.用类cylinder计算圆柱体的体积,并存储在一个double变量中.在类cyl ...

  9. Semaphore用法

    HANDLE hSemaphore; cout<<1<<endl; hSemaphore = CreateSemaphore( NULL, 0, 10000, NULL);   ...

  10. 64位 SQL Server2008链接访问Oracle 过程汇总解决方法记录

    64位 SQL Server2008链接访问Oracle 过程汇总解决方法记录 经过几天不停的网上找资料,实验,终于联通了. 环境:系统:win 2008 ,SqlServer2008 R2, 连接O ...