kaiserord函数的句法有如下几种:
①[n,Wn,beta,ftype] = kaiserord(f,a,dev)
②[n,Wn,beta,ftype] = kaiserord(f,a,dev,fs)
③c = kaiserord(f,a,dev,fs,'cell')

kaiserord函数返回一个滤波阶数n和beta参数来指定一个kaiser窗口,供后期的fir1函数使用。给定一组频域中的规范(其实就是给kaiserord函数一些参数,这些参数限定了kaiser窗的一些性质),kaiserord函数将会估计出近似满足给定规范的最小的滤波器阶数。同时,kaiserord函数将会把给定的规范转换为通带和阻带纹波,并将截止频率转换为窗口FIR滤波器设计所需的形式。

[n,Wn,beta,ftype] = kaiserord(f,a,dev) 得到近似阶数n,归一化的频带边缘Wn,并且满足输入规范的权重f、a和dev。f是一个band edge的矢量。a是一个矢量,指定由f定义的带上的期望幅度。f的长度是a的两倍(最小是两倍),f和a一起定义一个期望的分段常数响应函数。dev是一个向量,其大小与a相同,用于指定每个频带的输出滤波器的频率响应与其期望幅度之间的最大允许误差或偏差。dev指定通带纹波和阻带衰减。可以指定dev中的每个数都为正数,表示绝对滤波器增益(不是以分贝为单位)。注意:如果在向量dev中指定了不同的带偏差,则使用最小指定偏差,因为Kaiser窗口方法被限制为产生所有带中具有最小偏差的滤波器。

fir1函数可以使用kaiserord函数返回的阶数n、频率向量Wn、多频带幅度类型ftype和Kaiser窗口参数beta。ftype参数供fir1使用:对于高通滤波器,它等于'高';对于带阻滤波器,它等于'停止'。对于多频带滤波器,当第一频带是阻带(从f = 0开始)时,它可以等于'DC-0'或当第一频带是通带时它可以等于'DC-1'。

要设计一个大致符合kaiser参数f,a和dev给出的规格的FIR滤波器b,可以使用以下命令:

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

[n,Wn,beta,ftype] = kaiserord(f,a,dev,fs)使用以Hz为单位的采样频率fs。 如果未指定参数fs,或者将其指定为空向量[],则默认为2 Hz,奈奎斯特频率为1 Hz。 可以使用此语法指定缩放到特定应用程序采样频率的波段边缘。 f中的频带边缘必须从0到fs / 2。

c = kaiserord(f,a,dev,fs,'cell')是一个单元数组,c中元素是fir1的参数。注意:在某些情况下,kaiserord低估或高估了阶数n。 如果过滤器不符合规格,请尝试更高的阶数,例如n+1,n+2等,或尝试更低的阶数例如n-1,n-2等。如果截止频率或奈奎斯特频率接近0,或者如果dev很大(大于10%),则结果不准确。

看到这儿的时候,还是对这些参数很迷糊,不知道这些参数是干什么的、有什么意义。下面是用matlab做仿真,从仿真图上可以慢慢体会到这些参数在滤波器设计时的作用。

举例说明

Kaiser窗口低通滤波器设计

设计一个低通滤波器,通带定义为0到1 kHz,阻带定义为1.5kHz到4 kHz。指定5%的通带纹波和40 dB的阻带​​衰减。

fsamp = 8000;
fcuts = [1000 1500];
mags = [1 0];
devs = [0.05 0.01];[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);
hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');freqz(hh)

仿真图如下:

得到的仿真结果数据如下图:

Kaiser窗口带通滤波器设计

设计一个奇数长度的带通滤波器。请注意,奇数长度表示偶数顺序,因此输入fir1必须是整偶数。

fsamp = 8000;
fcuts = [1000 1300 2210 2410];
mags = [0 1 0];
devs = [0.01 0.05 0.01];[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);
n = n + rem(n,2);
hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');[H,f] = freqz(hh,1,1024,fsamp);
plot(f,abs(H))
grid

仿真图如下:

仿真的到的结果数据如下图所示:

 对参数的说明

现在是不是对kaiserord函数中的参数有了一些认识了? 下面就Kaiser窗口带通滤波器设计这个例子的程序来进行说明。

首先来看fsamp参数,当把这个参数的值改为4000会发生什么事情呢?

设置的fcuts是带边缘频率,最大达到2410,这个值是大于fsamp(fs)的二分之一的,所以报错。 那么把这个参数改为16000会如何呢?

右下角的值变为了8000(fs的二分之一) ,所以这个图显示了fs一半的情况,那还有一半的情况呢?其实另一半和这个情况是一样的,只不过是关于竖轴对称而已。

关于fcuts和mags参数,这个就比较好理解了。我们从带通滤波器设计的第一个仿真图来进行说明。参数设置为fcuts=[1000 1300 2210 2410]、mags=[0 1 0]。我们从图中可以看出,在1300-2210之间是通带,在1000-1300和2210-2410之间是通带向阻带转变的区间。我们可以这么理解,采样率为8000,它的一半为4000,在0-4000这个范围里面设置通或者阻,在这里我们设置阻带为0-1000(mags对应位置的参数为0),1000-1300向通带转变(就是一个过渡带,没有mags参数与之对应),1300-2210为通带(mags对应位置的参数为1),2210-2410向阻带转变,2410-4000为阻带(mags对应位置的参数为0)。如果将fcuts和mags设置为fcuts = [700 800 1200 1300 2700 2800 3200 3300]、mags = [0 1 0 1 0],结果会是怎样呢?如下图所示:

devs参数表示的是某一段波形的平整度。在带通的例子里,如果我们把devs设置为devs=[0.1 0.5 0.1],则仿真出来的图形如下:

可以看到,通带和阻带的部分,起伏都比较大。

Kaiser窗口FIR滤波器设计估算参数相关推荐

  1. 基于fpga的fir滤波器设计,通过matlab代码设计滤波器参数,最终通过fpga实现

    基于fpga的fir滤波器设计,通过matlab代码设计滤波器参数,最终通过fpga实现,modelsim仿真,最后在开发板上实现,两路adc采集的掺杂高频信号经过低通滤波器之后,由dac输出,由si ...

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

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

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

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

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

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

  5. FIR滤波器设计(包括Verilog HDL设计以及MATLAB设计)

    FIR滤波器设计 滤波器原理:滤波器就是对特定的频率或者特定频率以外的频率进行消除的电路,被广泛用于通信系统和信号处理系统中.从功能角度,数字滤波器对输入离散信号的数字代码进行运算处理,以达到滤除频带 ...

  6. fir 低通 matlab,MATLAB常用的FIR滤波器设计方法之窗函数法

    FIR滤波器很多工科出身的人都不会陌生,在我们的学习和工作中,也常常需要设计FIR滤波器.因为FIR滤波器有两个特点:滤波器是稳定的以及具有线性相位.FIR滤波器在信号处理相关领域当然也包括本人所在的 ...

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

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

  8. AD9361 FIR 滤波器设计

    通过MATLAB,使用AD9361 Filter Design Wizard App设计Tx/Rx FIR滤波器,生成的.fir文件可以在 AD936x 配置软件(AD936x Evaluation ...

  9. 低通采样的matlab实现,基于matlab的FIR滤波器设计(低通,频率取样法)

    基于matlab的FIR滤波器设计(低通,频率取样法)一.参考程序 M=63;%所需频率采样点个数 Wp=0.5*pi;%通带截止频率 m=0:(M+1)/2;%通频带上的采样点 Wm=2*pi*m. ...

最新文章

  1. Ubuntu下编译内核
  2. Luntik and Subsequences 思维
  3. html 使用button调用函数
  4. hdu 4407 Sum
  5. java--面对对象之final关键字和static关键字
  6. python输入的方式有几种_Python输入方式具体的三种实现方式
  7. JSK-5 矩阵翻转【入门】
  8. httpHandler实现.Net无后缀名Web访问
  9. ZStack GPU解决方案
  10. 有手就行:零基础渗透网站步骤
  11. hightopo|海上作业平台的三维可视化场景
  12. 微信小程序图片组件,ios不显示,安卓正常
  13. 怎么证明根号2是无理数,我们来推导和计算,还有逼格极高的算法
  14. 记录:ERROR YarnScheduler: Lost executor 2 on XXX: Container killed by YARN for exceeding memory limits
  15. iPhone开发部分总结
  16. 深入浅出matplotlib(18):三个Y轴显示
  17. ui曲线谁是横坐标_在数学中,横坐标是X轴还是Y轴
  18. 多线程04:网图下载
  19. Nginx “邪恶” rewrite
  20. python中的 pip 和 requirements.txt 是干什么的

热门文章

  1. 多重比较你用对了吗?
  2. css 文本溢出省略号
  3. 经典好用的软件,不容错过
  4. rpc服务器不可用 不显示桌面,rpc服务器不可用,教您rpc服务器不可用怎么解决
  5. 迎接现代物流新阶段计算物流智能配送
  6. word 显示所有书签
  7. excel 甘特图制作(详细)
  8. 跟平庸和解?可笑,世界未曾跟穷人和解。
  9. matlab图像去雾实现
  10. js中的repeat()