MATLAB函数——fir1
文章目录
- 语法
- 说明
- 示例
- FIR 带通滤波器
- FIR 高通滤波器
- 多频带 FIR 滤波器
- 输入参数
- `n` - 滤波器阶数
- `Wn` - 频率约束
- `ftype` - 滤波器类型
- `window` - 窗
- `scaleopt` - 归一化选项
- 输出参数
- `b` - 滤波器系数
- 算法
- 参考
- 扩展功能
- C/C++ 代码生成
- 另请参阅
fir1
:基于窗函数法的 FIR 滤波器设计
语法
b = fir1(n,Wn)
b = fir1(n,Wn,ftype)
b = fir1(___,window)
b = fir1(___,scaleopt)
说明
b = fir1(n,Wn)
使用 Hamming 窗设计具有线性相位的 n
阶低通,带通或多频带 FIR 滤波器。滤波器的类型取决于 Wn
的元素数。举例
b = fir1(n,Wn,ftype)
根据 ftype
的值和 Wn
的元素数,设计一个低通,高通,带通,带阻或多频带滤波器。举例
b = fir1(___,window)
使用 window
中指定的向量和上述语法中的任何参数来设计滤波器。举例
b = fir1(___,scaleopt)
额外指定滤波器的幅度响应是否已归一化。
注意:
使用
fir2
设计具有任意频率响应的加窗滤波器。
示例
FIR 带通滤波器
设计一个通带为 0.35 π⩽ω⩽\pi\leqslant \omega \leqslantπ⩽ω⩽ 0.65π\piπ rad / sample 的 48 阶 FIR 带通滤波器。将其幅度和相位响应可视化。
b = fir1(48,[0.35 0.65]);
freqz(b,1,512)
FIR 高通滤波器
加载 chirp.mat
。 该文件包含一个信号 y
,其大部分功率都高于 Fs/4
或奈奎斯特频率的一半。 采样率为 8192 Hz。
设计一个 34 阶 FIR 高通滤波器,以衰减低于 Fs/4
的信号分量。使用 0.48 的截止频率和 30 dB 纹波的切比雪夫窗。
load chirpt = (0:length(y)-1)/Fs;bhi = fir1(34,0.48,'high',chebwin(35,30));
freqz(bhi,1)
对信号进行滤波。显示原始和高通滤波后的信号。两图都使用相同的 y 轴比例。
outhi = filter(bhi,1,y);subplot(2,1,1)
plot(t,y)
title('Original Signal')
ys = ylim;subplot(2,1,2)
plot(t,outhi)
title('Highpass Filtered Signal')
xlabel('Time (s)')
ylim(ys)
设计具有相同规格的低通滤波器。对信号进行滤波,并将结果与原始信号进行比较。两图都使用相同的 y 轴比例。
blo = fir1(34,0.48,chebwin(35,30));outlo = filter(blo,1,y);subplot(2,1,1)
plot(t,y)
title('Original Signal')
ys = ylim;subplot(2,1,2)
plot(t,outlo)
title('Lowpass Filtered Signal')
xlabel('Time (s)')
ylim(ys)
多频带 FIR 滤波器
设计一个46阶FIR滤波器,该滤波器可以衰减低于 0.4π\piπ rad / sample 和介于 0.6π\piπ 和 0.9π\piπrad / sample之间的归一化频率。将滤波器称为 bM
。
ord = 46;low = 0.4;
bnd = [0.6 0.9];bM = fir1(ord,[low bnd]);
重新设计 bM
,交换其通带和阻带。将新的滤波器称为 bW
。 使用 fvtool
显示滤波器的频率响应。
bW = fir1(ord,[low bnd],'DC-1');hfvt = fvtool(bM,1,bW,1);
legend(hfvt,'bM','bW')
使用 Hann 窗重新设计 bM
。 (DC-0
是可选的。)比较 Hamming 窗和 Hann 窗设计的幅度响应。
hM = fir1(ord,[low bnd],'DC-0',hann(ord+1));hfvt = fvtool(bM,1,hM,1);
legend(hfvt,'Hamming','Hann')
使用 Tukey 窗重新设计 bw
。 比较 Hamming 窗和 Tukey 窗设计的幅度响应。
tW = fir1(ord,[low bnd],'DC-1',tukeywin(ord+1));hfvt = fvtool(bW,1,tW,1);
legend(hfvt,'Hamming','Tukey')
输入参数
n
- 滤波器阶数
滤波器阶数,指定为整数标量。
对于高通和带阻滤波器,fir1
始终使用偶数阶滤波器。此时阶数必须是偶数,因为奇数阶对称 FIR 滤波器在奈奎斯特频率下必须具有零增益。如果为高通或带阻滤波器指定奇数 n
,则 fir1
将 n
增加 1。
数据类型:double
Wn
- 频率约束
频率约束,指定为标量,二元向量或多元向量。
Wn
的所有元素必须严格大于 0 且严格小于 1,其中 1 对应于奈奎斯特频率:0 < Wn
<1。奈奎斯特频率是采样率的一半或 π\piπ rad / sample。
如果
Wn
是标量,则fir1
设计一个截止频率为Wn
的低通或高通滤波器。截止频率是滤波器的归一化增益为 –6 dB 的频率。如果
Wn
是二素向量[w1 w2]
,其中w1
<w2
,则fir1
设计一个具有较低截止频率w1
和较高截止频率w2
的带通或带阻滤波器。如果
Wn
是多元素向量[w1 w2 ... wn]
,其中w1
<w2
< …<wn
,则fir1
返回频带为 0 < ω\omegaω <w1
,w1
< ω\omegaω <w2
,…,wn
< ω\omegaω < 1 的n
阶多频带滤波器。
数据类型:double
ftype
- 滤波器类型
滤波器类型,指定为以下之一:
'low'
指定一个截止频率为Wn
的低通滤波器。'low'
是标量Wn
的默认值。‘high’ 指定一个截止频率 为
Wn
的高通滤波器。'bandpass'
指定一个带通滤波器,如果Wn
为二元向量。 当Wn
具有两个元素时,默认设置为'bandpass'
。'stop'
指定一个带阻滤波器,如果Wn
为二元向量。'DC-0'
指定第一频带为阻带的多频带滤波器。 当Wn
具有两个以上元素时,默认设置为'DC-0'
。'DC-1'
指定第一通带为阻带的多频带滤波器。
window
- 窗
窗,指定为向量。 窗向量必须具有 n + 1
个元素。 如果未指定窗,则 fir1
将使用 Hamming 窗口。 有关可用窗的列表,请参见加窗法。
如果尝试设计奇数阶的高通或带阻滤波器,则 fir1
不会自动增加窗的长度。
举例:kaiser(n+1,0.5)
指定一个用于 n
阶滤波器的成型因子为 0.5 的 Kaiser 窗。
举例:hamming(n+1)
等价于未指定窗。
数据类型:double
scaleopt
- 归一化选项
归一化选项,指定为 'scale'
或 'noscale'
,默认为 'scale'
。
'scale'
对系数进行归一化,以使通带中心处的滤波器幅度响应为 1(0 dB)。'noscale'
不对系数进行归一化。
输出参数
b
- 滤波器系数
滤波器系数,以长度为 n + 1
的行向量返回。这些系数以 Z 变换变量 zzz 的降幂排序:
B(z)=\bm{B}(z)=B(z)= b(1)
+ b(2)
zzz + … + b(n+1)
z−nz^{-n}z−n
算法
fir1
使用最小二乘估计来计算滤波器系数,然后加窗来平滑脉冲响应。
参考
[1] Digital Signal Processing Committee of the IEEE Acoustics, Speech, and Signal Processing Society, eds. Programs for Digital Signal Processing. New York: IEEE Press, 1979, Algorithm 5.2.
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
另请参阅
cfirpm
| designfilt
| filter
| fir2
| fircls
| fircls1
| firls
| firpm
| freqz
| hamming
| kaiserord
在 R2006a 之前推出
原文参考:https://ww2.mathworks.cn/help/signal/ref/fir1.html
MATLAB函数——fir1相关推荐
- MATLAB函数fir1
fir1 基于窗函数的fir滤波器设计: 主要形式: b = fir1(n,Wn) b = fir1(n,Wn,ftype) b = fir1(___,window) b = fir1(___,sca ...
- Matlab函数fir1(n,Wn)中的归一化频率的含义
Wn是一个归一化频率,在滤波器设计中是用fs/2进行归一. 在fir1滤波器设计时采用的是归一化频率.实际采样频率为fs,实际的截止频率为fc,设归一化截止频率为fcm,fcm=fc/(fs/2).
- 数据反正模拟 matlab,[2018年最新整理]信号处理MATLAB函数.doc
[2018年最新整理]信号处理MATLAB函数 函数说明波形产生和绘图chirp产生扫描频率余弦diric产生Dirichlet或周期sinc信号gauspuls产生高斯调制正弦脉冲rulstran产 ...
- matlab的fir1截止频率的设置
matlab的fir1函数,除了滤波器阶数外,还需要配置截止频率,怎么设置呢? 比如低通滤波器,根据采用频率fs,希望通过和截止的频率f1.f2,那么该系数就应该在(f1/(fs/2),f2/(fs/ ...
- MATLAB 函数速查手册目录
第 1 章 MATLAB 操作基础 第 2 章 矩阵及其基本运算 第 3 章 数值计算函数 第 4 章 符号运算函数 第 5 章 概率统计 第 6 章 绘图与图形处理 第 7 章 MATL ...
- matlab eigs 虚数,MATLAB函数速查手册
内容简介 MATLAB是目前流行的理论与工程仿真软件之一.该软件自产生以来,就以其独有的特点和明显的优势吸引了各行各业的工作者.<MATLAB函数速查手册>较全面地介绍了MATLAB的函数 ...
- 求介绍matlab函数用法的书,MATLAB初学者教程--函数用法的简单介绍
1.4 函数用法的简单介绍 1.4.1什么是函数 似乎很多人一听到函数这个词就会想到数学中的某个概念,然后对于恐惧数学的同学就开始打退堂鼓.在matlab当中到处可以用到函数,它的出现可以让我们用很简 ...
- 【转】matlab函数_连通区域
转载自einyboy的博文Matlab的regionprops详解 1. matlab函数bwareaopen──删除小面积对象 格式:BW2 = bwareaopen(BW,P,conn) 作用:删 ...
- matlab 开 闭 代码,C++中的MATLAB函数〔闭锁〕
很抱歉恢复了一个老问题,但我目前正在研究一个开源C++库,它正好回答了这个问题: KeyCpp 是一个开源的C++库,它提供了Matlab或八度音阶的语法,用于一些有用的数值方法和一些绘图功能.目前有 ...
- 2021-01-28 粒子群优化算法-Python版本和Matlab函数 particleswarm 调用
粒子群优化算法-Python版本和Matlab函数 particleswarm 调用 前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab ...
最新文章
- mysql 1061原因_MySQL死锁问题分析及解决方法实例详解(转)
- Intel不争气,7nm再延后两年将彻底落败
- [转]WEB开发者必备的7个JavaScript函数
- 代码创建 WPF 旋转动画
- 用原生JavaScript实现无缝轮播
- java ee cdi_Java EE CDI依赖注入(@Inject)教程
- mongodb 监控权限_运维监控产品分析篇
- STM32程序占用的内存容量计算
- c语言第一章节测试,计算机二级C语言教程章节测试:字符串
- mysql 杀掉连接_批量杀死MySQL连接的几种方法
- springmvc 同时匹配.do,.action
- 箱线图怎么看_K线的48种不同类型全解(建议收藏),教你怎么看懂K线图
- css绘制向左三角形_CSS绘制三角形—border法
- ArcGIS 10.5 及 ArcGIS Server下载安装破解环境配置
- 微信小程序 通过百度API接口实现汉译英翻译
- [转]AVALONDOCK 2.0入门指南第一部分
- c语言void delay是什么意思,delay是什么意思(单片机中delay)
- 两个计算机怎么共享一台打印机共享,两台电脑如何共享打印机 多台电脑共享一台打印机设置方法【详细教程】...
- win7正在配置请勿关闭计算机,win7系统开机屏幕显示“正在配置Windows Update,请勿关机”的解决方法...
- 文献解读 | 科学家发现代谢调控促进肿瘤转移新机制