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

滤波器设计的目标是实现数据序列的频率成分变更。严格的设计规格需要指定通带波纹数、阻带衰减、过渡带宽度等。更准确的指定可能需要实现最小阶数的滤波器、需要实现任意形状的滤波器形状或者需要用fir滤波器实现。指定的要求不同,滤波器的设计也不同。

Matlab的信号处理工具箱软件提供了两种方式设计滤波器:面向对象的和非面向对象的。面向对象的方法首先创建一个滤波器对象fdesign,然后调用合适的design参数设计。如实现一个5阶的低通巴特沃斯滤波器,3dB截止频率为200Hz,采样频率1000Hz,代码如下

Fs=1000; %Sampling Frequency

time = 0:(1/Fs):1; %time vector

% Data vector

x = cos(2*pi*60*time)+sin(2*pi*120*time)+randn(size(time));

d=fdesign.lowpass('N,F3dB',5,200,Fs); %lowpass filter specification object

% Invoke Butterworth design method

Hd=design(d,'butter');

y=filter(Hd,x);

非面向对象的方法则适用函数实现滤波器设计,如butter、firpm。所有非面向对象的滤波器设计函数使用的是归一化频率,归一化频率[0, 1]之间,1表示πrad。将Hz频率转化为归一化频率的方法为乘以2除以采样频率。设计上面同样的滤波器,使用非面向对象的方法如下

Wn = (2*200)/1000; %Convert 3-dB frequency

% to normalized frequency: 0.4*pi rad/sample

[B,A] = butter(5,Wn,'low');

y = filter(B,A,x);

滤波函数

* filter:利用递归滤波器(IIR)或非递归滤波器(FIR)对数据进行数字滤波;

* fftfilt:利用基于FFT的重叠相加法对数据进行滤波,只适用于非递归滤波器(FIR);

* filter2:二维FIR数字滤波;

* filtfilt:零相位滤波(IIR与FIR均可)。

滤波器特性分析

* 脉冲响应Impz

等价于使用函数filter输入一个脉冲信号x=[1;zero(N-1,1)]。

* 频率响应freqz与freqs

Freqz:求解数字滤波器的频率响应

Freqs:求解模拟滤波器的频率响应

* 幅频和相频abs与angle、unwrap

Unwrap:解卷绕

* 群延迟grpdelay

群延迟即为滤波器相位响应的负一阶导数,是滤波器平均延迟的度量。

* 零极点分析zplane

IIR数字滤波器设计

模拟低通滤波器设计

* 巴特沃斯低通滤波器设计buttap

* 切比雪夫低通滤波器设计cheb1ap与cheb2ap

* 椭圆低通滤波器设计ellipap

模拟滤波器最小阶数的选择

* 巴特沃斯滤波器Buttord

* 切比雪夫1型滤波器Cheb1ord

* 切比雪夫2型滤波器Cheb2ord

* 椭圆滤波器Ellipord

模拟高通、带通、带阻滤波器设计

* 模拟低通到模拟低通lp2lp

* 模拟低通到模拟高通lp2hp

* 模拟低通到模拟带通lp2bp

* 模拟低通到模拟带阻lp2bs

IIR实频变换

* IIR实频率移位变换iirshift

* 实低通到实低通的频率移位变换iirlp2lp

* 实低通到实高通的频率移位变换iirlp2hp

* 实低通到实带通的频率移位变换iirlp2bp

* 实低通到实带阻的频率移位变换iirlp2bs

* 实低通到实多带的频率移位变换iirlp2mb

* 实低通到实多点的频率移位变换iirlp2xn

IIR复频变换

* IIR复频率移位变换iirshiftc

* 实低通到复带通的频率移位变换iirlp2bpc

* 实低通到复带阻的频率移位变换iirlp2bsc

* 实低通到复多带的频率移位变换iirlp2mbc

* 实低通到复多点的频率移位变换iirlp2xnc

* 复带通到复带通的频率移位变换iirbpc2bpc

模拟滤波器的离散化

* 脉冲响应不变法impinvar

* 双线性变换法bilinear

IIR滤波器的直接设计

* 贝塞尔模拟滤波器Besself

* 巴特沃斯滤波器Butter

* 切比雪夫1型滤波器Cheby1

* 切比雪夫2型滤波器Cheby2

* 椭圆型滤波器Ellip

* 递归数字滤波器Yulewalk

使用最小二乘法拟合频率响应函数。

* 一般数字滤波器Maxplat

小结

相对于FIR滤波器,IIR滤波器的主要优点在于它以比FIR更小的阶数满足指定的滤波要求。虽然IIR滤波器有非线性的相位,但matlab软件中的数据处理方式是离散的,即全部数据序列被用于滤波。这允许了零相位滤波方法存在,可以使用函数filtfilt函数实现,它可以消除IIR滤波器的非线性相位偏移。

IIR滤波方法小结

滤波方法

描述

滤波器函数

模拟原型

使用连续域的经典低通原型滤波器模型零极点,再通过频率变换和滤波器离散化得到数字滤波器

直接滤波器设计函数:

besself,butter,cheby1, cheby2, ellip

阶数预测函数:

buttord, cheb1ord, cheb2ord, ellipord

低通模拟原型函数:

besselap, buttap, cheb1ap, cheb2ap, ellipap

频率变换函数:

lp2bp, lp2bs, lp2hp, lp2lp

滤波器离散函数:

bilinear, impinvar

直接设计

通过逼近线性幅值响应直接在离散域设计数字滤波器

yulewalk

广义巴特沃斯滤波器设计

设计零点多于极点的低通巴特沃斯滤波器

maxflat

参数建模

通过逼近给定的时域或频域响应得到数字滤波器

时域建模函数:

lpc, prony, stmcb

频域建模函数:

invfreqs, invfreqz

FIR数字滤波器设计

窗函数法

* 设计具有标准频率响应的FIR滤波器Fir1

* 设计具有任意频率响应的FIR滤波器Fir2(如多带通滤波器)

使用凯塞窗时可以使用kaiserord函数设计FIR参数

切比雪夫逼近法

* 最佳一致逼近法设计firpm

估计最佳一致逼近法滤波器的阶次firpmord

* 任意响应法cfirpm

约束最小二乘法

* 设计线性相位滤波器firls

* 设计多带线性相位滤波器fircls

* 设计低通或高通线性相位滤波器fircls1

设计Savitzky-Golay平滑滤波器sgolay
小结

FIR滤波器有如下主要优点:

* 准确线性相位

* 总是稳定的

* 设计方法是线性的

* 可以有效的在硬件上实现

* 滤波初始过渡阶段持续时间有限

它的主要缺点是它需要比IIR更高的阶数来实现给定的响应,相应的,它的滤波器延迟也比IIR的大。

FIR滤波方法小结:

滤波器设计方法

描述

滤波器函数

窗函数设计法

对傅里叶逆变换加窗

fir1, fir2, kaiserord

多带逼近

最小二乘法一致逼近多带频率响应

firls, firpm, firpmord

约束最小二乘法

在最大误差的约束下最小化误差平方和

fircls, fircls1

任意响应

任意响应设计,包括非线性相位、复频域滤波器

cfirpm

Raised Cosine

平滑正弦过渡的低通响应

firrcos

工具箱GUI

Sptool信号分析工具箱GUI

Wintool窗函数查看工具箱GUI

转自:http://blog.csdn.net/app_12062011/article/details/7789695

Matlab滤波器设计(转)的更多相关文章

  1. IIR滤波器设计(调用MATLAB IIR函数来实现)

    转载请注明文章来源 – http://blog.csdn.net/v_hyx ,请勿用于任何商业用途         对于滤波器设计,以前虽然学过相关的理论(现代数字信号处理和DSP设计),但一直不求 ...

  2. 信号、系统与滤波器设计(matlab)

    0. 基本概念 AWG:Additive White(zero-mean) Gaussian,可加白噪声: AWGN:Additive White(zero-mean) Gaussian Noise ...

  3. FIR滤波器设计

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

  4. fdatool的滤波器设计

    作者:桂. 时间:2017-08-15  20:28:11 链接:http://www.cnblogs.com/xingshansi/p/7367738.html 前言 本文主要记录滤波器设计的基本流 ...

  5. matlab进行FIR滤波器设计(一)

    来源:https://blog.csdn.net/leokingszx/article/details/80041910 在实际的应用中,有时需要使用FIR根据完成一些特定功能,比如近似一阶RC低通电 ...

  6. matlab滤波器的设计

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

  7. 基于matlab的FIR加窗滤波器设计

    1.确定参数: Wp 通带截止频率 Ws  阻带截止频率 As  衰减dB Rp   纹波dB 2.根据参数确定理想 频率响应 (M     (Wp + Ws )/2  ) 双边响应 3.选窗 过滤带 ...

  8. Python在信号与系统(1)——Hilbert兑换,Hilbert在国家统计局的包络检测应用,FIR_LPF滤波器设计,格鲁吉亚也迫使高FM(PM)调制

    谢谢董老师,董老师是个好老师. 心情久久不能平静,主要是高频这门课的分析方法实在是让我难以理解,公式也背只是,还是放放吧. 近期厌恶了Matlab臃肿的体积和频繁的读写对我的Mac的损害,所以学习了一 ...

  9. Matlab GUI设计(2)

    11. (1)界面设计 (2)添加按钮的回调函数 function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle ...

随机推荐

  1. teiid入门

    teiid,是jboss组件中进行数据虚拟化的部件(data virtualization).但是对teiid的介绍比较少,这里记录一下我的学习过程. 一.编译安装teiid teiid的安装,可以选 ...

  2. 从键盘上输入一个正整数n,请按照以下五行杨辉三角形的显示方式, 输出杨辉三角形的前n行。请采用循环控制语句来实现。

    Scanner sc=new Scanner(System.in); System.out.println("请输入一个正整数:"); int ss=sc.nextInt(); i ...

  3. Python类属性的延迟计算

    所谓类属性的延迟计算就是将类的属性定义成一个property,只在访问的时候才会计算,而且一旦被访问后,结果将会被缓存起来,不用每次都计算. 优点 构造一个延迟计算属性的主要目的是为了提升性能 实现 ...

  4. (原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 决策树分析算法)

    随着大数据时代的到来,数据挖掘的重要性就变得显而易见,几种作为最低层的简单的数据挖掘算法,现在利用微软数据案例库做一个简要总结. 应用场景介绍 其实数据挖掘应用的场景无处不在,很多的环境都会应用到数据 ...

  5. MySQL基础学习(一) 命令行命令

    1. 命令行登录 mysql -uroot -p 按照提示输入密码 常用登录选项 -u 指定用户 -p 密码 -h 数据库所在主机 -P 端口 -D 指定数据库 2.命令行退出 exit quit \ ...

  6. shell 面试题

      1. 用sed修改test.txt的23行test为tset:     sed –i ‘23s/test/tset/g’ test.txt 2. 查看/web.log第25行第三列的内容.     ...

  7. Centos 开机自启动一些软件配置

    CentOS设置服务开机启动的方法   CentOS设置服务开机启动的两种方法 1.利用 chkconfig 来配置启动级别 在CentOS或者RedHat其他系统下,如果是后面安装的服务,如http ...

  8. [转]怎么在MVC中使用自定义Membership

    本文转自:http://www.cnblogs.com/angelasp/p/4078244.html 首先我们来看看微软自带的membership: 我们打开系统下aspnet_regsql.exe ...

  9. [Copy]Bird's booklist

    Copy from Bird Thanks! Here is his website: Bird's book list 0x01 编程语言 Python基础教程(第2版) Effective Jav ...

  10. stm32中断无电平触发的解决办法

    这几天在用stm32读取FPGA中FIFO里的数据,遇到了不少的问题.其中有个自己觉得比较好玩的问题,就拿出来写写.其实这个问题也比较简单,开始我觉得没必要拿出来写,不过,想想后觉得还是写写吧,就当做 ...