窗函数法设计FIR中,如何选择窗函数和滤波器阶数N

窗函数法设计FIR中,如何选择窗函数和滤波器阶数N

1、概述

       在用窗函数法设计FIR滤波器时,给出了滤波器要求的具体指标,包括通带频率fp、阻带频率fs、通带波纹Rp 和阻带衰减As 等,有了这些指标后,是否什么窗函数都可以选择呢?答案是否定的。那么怎么选择窗函数呢?在本文中将说明窗函数的选择和滤波器阶数N的选择。

2、理论基础

       不同窗函数的阻带最小衰减是不相同的,例如我们要求阻带衰减为 50dB,则矩形窗和汉宁窗的最小衰减分别为 21dB 和 44dB,若用这两种窗函数,无论 N 有多长,都没有办法满足阻带衰减达到 50dB。为了满足阻带衰减达到 50dB,只有选择海明窗,因为它的阻带衰减能达到 53dB 。所以窗函数的选择主要是根据滤波器指标中对阻带衰减 As 的要求。(根据阻带衰减选择窗函数)

       在选择窗函数后又怎么决定滤波器的阶数 N 呢?在设定的滤波器指标中给出了通带频率fp阻带频率fs ,在通带频率fp 和 阻带频率fs 之间是过渡带,设\Delta f=f_{s}-f_{p}△f=fs-fp,,则过渡带应与对应窗函数的“精确过渡带宽”相等。设把精确过渡带宽表示为dw/N,则对于任意某一种窗函数就应有:\Delta f=dw/N

这样可得N为:N=dw/\Delta f

根据上表,以海明窗为例,N=\frac{6.6\pi }{\Delta f},注意在计算中,△f是归一化的角频率。综上所述,经过渡带可求出FIR滤波器的阶数。对于带通滤波器或带阻滤波器,通带频率有fp1及fp2,阻带频率有fs1及fs2,以带通滤波器为例,分别求出\Delta f1=fp1-fs1 及 \Delta f2=fs2-fp2,从\Delta f1\Delta f2 之间选择小的一个作为\Delta f

\Delta f = min(\Delta f1, \Delta f2)

式中:min(·)表示选用最小值。

3、实例

例3-13-1、要求设计一个低通滤波器,采样频率为100Hz,通带频率fp=3Hz,阻带频率fs=5Hz;而通带波纹Rp=3dB,阻带衰减As=50dB。由于设计要求As=50dB,分析可知选择海明窗能满足要求,所以在窗函数法中用海明窗。

程序如下:

clear all; clc; close all
Fs = 100;                        % 采样频率 
Fs2 = Fs/2;                      % 奈奎斯特频率
fp = 3; fs = 5;                  % 通带和阻带频率
Rp =3 ; As = 50;                 % 通带波纹和阻带衰减
wp = fp*pi/Fs2; ws = fs*pi/Fs2;  % 通带和阻带归一化角频率
deltaw= ws - wp;                 % 过渡带宽Δω的计算
N = ceil(6.6*pi/ deltaw);        % 按海明窗计算所需的滤波器阶数N(按式(3-13-1))
N = N + mod(N,2);                % 保证滤波器系数长N+1为奇数
wind = (hamming(N+1))';          % 海明窗计算
Wn=(3+5)/100;                    % 计算截止频率
b = fir1(N,Wn,wind);             % 用fir1函数设计FIR第1类滤波器
[db,mag,phs,gdy,w] = freqz_m(b,1); % 计算滤波器响应
% 作图
subplot 211; plot(w*Fs/(2*pi),db,'k','linewidth',2);
title('(a)低通滤波器的幅值响应');
grid; axis([0 20 -70 10]); 
xlabel('频率/Hz');  ylabel('幅值/dB')
set(gca,'XTickMode','manual','XTick',[0,3,5,20])
set(gca,'YTickMode','manual','YTick',[-50,0])
subplot 212; stem(1:N+1,b,'k');
xlabel('频率/Hz');  ylabel('幅值/dB')
title('(b)低通滤波器的脉冲响应');
xlabel('样点');  ylabel('幅值')
axis([0 167 -0.05 0.1]); 
set(gca,'XTickMode','manual','XTick',[1,84,167])
set(gcf,'color','w');

说明:

①因为选择了海明窗,按式N=dw/\Delta f求出滤波器阶数N:N = ceil(6.6 * \pi / dw)

②一般设计的FIR滤波器都是第1类FIR滤波器,要求脉冲序列长N是奇数。而从①
中求得的滤波器阶数N不知是偶数还是奇数。通过 N = N + mod(N,2) 保证滤波器阶数N为偶数,而脉冲响应序列长将是N+1,即为奇数,满足第1类FIR滤波器要求。滤波器阶数若为N,脉冲响应序列的长度总为N+1,在FIR滤波器中脉冲响应序列的长度与滤波器阶数总差1。

③在计算窗函数长度时用的 dw 是归一化角频率,而在 fir1函数中的 Wn 用的是归一化频率,这两者的单位是不同的,且截止频率 Wn 的计算是用 Wn=(fp+fs)/2

运行程序后得上图,从图中可看出滤波器完全满足设计的要求,在 5Hz处阻带衰减大于 50dB。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/120017.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JS】scrollTop+scrollHeight+clientTop+clientHeight+offsetTop+offsetHeight

scrollTop、scrollHeight、clientTop、clientHeight、offsetTop以及offsetHeight 1. scrollTop 与 scrollHeight 1.1 scrollTop scrollTop 是这六个属性中唯一一个可写的属性。 Element.scrollTop 属性可以获取或设置一个元素的内容垂直滚动的像素数。 一个元素的 scrollT…

Alfred 5 for mac(最好用的苹果mac效率软件)中文最新版

Alfred 5 Mac是一款非常实用的工具,它可以帮助用户更加高效地使用Mac电脑。用户可以学会使用快捷键、全局搜索、快速启动应用程序、使用系统维护工具、快速复制粘贴文本以及自定义设置等功能,以提高工作效率。 Alfred for Mac 的一些主要功能包括&#…

C++入门学习(1)命名空间和输入输出

前言 在C语言和基本的数据结构学习之后,我们终于迎来了期待已久的C啦!C发明出来的意义就是填补一些C语言的不足,让我们更加方便的写代码,所以今天我们就来讲一下C语言不足的地方和在C中的解决办法! 一、命名空间 在学习…

Linux开发工具的使用(vim、gcc/g++ 、make/makefile)

文章目录 一 :vim1:vim基本概念2:vim的常用三种模式3:vim三种模式的相互转换4:vim命令模式下的命令集- 移动光标-删除文字-剪切/删除-复制-替换-撤销和恢复-跳转至指定行 5:vim底行模式下的命令集 二:gcc/g1:gcc/g的作用2:gcc/g的语法3:预处理4:编译5:汇编6:链接7:函…

【Sql】sql server数据库提示:执行Transact-SQL语句或批处理时发生了异常。 无法打开数据库msdb,错误:926。

【问题描述】 打开sql server2008r2数据库的时候, 系统提示执行Transact-SQL语句或批处理时发生了异常。 无法打开数据库msdb,错误:926。 【概念理解】 首先MSDB数据库是的作用: 用于给SQL Server代理提供必要的信息来运行调度警…

2 快速上手使用Paimon数据湖

2.1 基于Flink SQL操作Paimon 在这里我们基于Flink 1.15(ON YARN)、Paimon 0.5版本开发一个案例。 注意:想要使用Paimon是非常简单的,不需要复杂的安装部署,只需要使用一个jar包即可对它进行操作。 我们在使用Paimon的时候其实也可以把它简单…

云闪付支付接口的技术实现方式

(一)整体框架。      云闪付的整体架构如图 1 所示,总体与原有的支付清算体系相同,只是增加了云端支付平台、移动应用平台和移动应用。云端支付平台主要对移动应用端的限制密钥进行更新和管理,同时对云端支付账户进…

2011年408计网

第33题 TCP/IP 参考模型的网络层提供的是()A. 无连接不可靠的数据报服务B. 无连接可靠的数据报服务C. 有连接不可靠的虚电路服务D. 有连接可靠的虚电路服务 本题考查TCP/IP 参考模型的网络层 若网络层提供的是虚电路服务,则必须建立网络层的…

WPF中依赖属性及附加属性的概念及用法

完全来源于十月的寒流,感谢大佬讲解 依赖属性 由依赖属性提供的属性功能 与字段支持的属性不同,依赖属性扩展了属性的功能。 通常,添加的功能表示或支持以下功能之一: 资源数据绑定样式动画元数据重写属性值继承WPF 设计器集成 …

佳能相机拍出来的dat文件怎么修复为正常视频

3-3 佳能相机是普通人用得最多的相机之一,也有一些专业机会用于比较重要的场景,比如婚庆、会议录像、家庭录像使用等。 但作为电子产品,经常会出现一些奇怪的故障,最严重的应该就是拍出来的东西打不开了。 本文案例是佳能相机拍…

校园安防监控系统升级改造方案:如何实现设备利旧上云与AI视频识别感知?

一、背景与需求分析 随着现代安防监控科技的兴起和在各行各业的广泛应用,监控摄像头成为众所周知的产品,也为人类的工作生活提供了很大的便利。由于科技的发达,监控摄像头的升级换代也日益频繁。每年都有不计其数的摄像头被拆掉闲置&#xf…

51单片机-串口通信

文章目录 前言1.基础介绍2.串口实战3.4. 前言 1.基础介绍 常见1,2,3,电源 常用方式1 fosc外部晶振 2.串口实战 3. 4.

软件测试/测试开发丨探索Python的魔力:从第一个程序到快捷键大揭秘

点此获取更多相关资料 第一个 Python 程序 通过程序输出 Hello World 是在学习每一门编程语言时,都会接触到的第一个程序。 在 Python 中,可以通过内置函数 print() 实现向控制台输出 Hello World 。 使用 print()输出 可以进入 命令行交互模式 或使…

从研发域到量产域的自动驾驶工具链探索与实践

导读 本文整理自 2023 年 9 月 5 日百度云智大会 - 智能汽车分论坛,百度智能云自动驾驶云研发高级经理徐鹏的主题演讲《从研发域到量产域的自动驾驶工具链探索与实践》。 全文中部段落附有演讲中 2 个产品演示视频的完整版,精彩不容错过。 (视频观看&…

生态环境领域基于R语言piecewiseSEM结构方程模型

结构方程模型(Sructural Equation Modeling,SEM)可分析系统内变量间的相互关系,并通过图形化方式清晰展示系统中多变量因果关系网,具有强大的数据分析功能和广泛的适用性,是近年来生态、进化、环境、地学、…

【网络】五中IO模型介绍 + 多路转接中select和poll服务器的简单编写

高级IO 前言正式开始前面的IO函数简单过一遍什么叫做低效的IO钓鱼的例子同步IO和异步IO五种IO模型阻塞IO非阻塞IO信号驱动多路转接异步IO 小结 代码演示非阻塞IO多路转接select介绍简易select服务器timeout 为 nullptrtimeout 为 {0, 0}timeout 为 {5, 0}调用accept select编写…

macos端串口调试推荐 serial直装激活 for mac

serial for mac版软件特色 1.准备好macOS High Sierra 最近的升级是否会让您的设备落后?Serial将使其恢复正常工作,同时保持Mac的安全功能完好无损。 2.完美无瑕的仿真 Serial是一个全功能的终端仿真器,支持Xterm,VT102和ANSI…

pyspark连接mysql数据库报错

使用pyspark连接mysql数据库代码如下 spark_conf SparkConf().setAppName("MyApp").setMaster("local")spark SparkSession.builder.config(confspark_conf).getOrCreate()url "jdbc:mysql://localhost:3306/test?useUnicodetrue&characterE…

Mactracker for mac(硬件信息查询工具)免费下载

想知道你电脑的信息吗?Mactracker Mac版是Macos上一款硬件信息查询工具,可以查询电脑中的硬件信息,还可以查看您使用软件的具体情况,苹果电脑产品和周边产品的信息,售价等等,让您对电脑有更多深刻的了解。 …

NowCoder | 环形链表的约瑟夫问题

NowCoder | 环形链表的约瑟夫问题 OJ链接 思路&#xff1a; 创建带环链表带环链表的删除节点 代码如下&#xff1a; #include<stdlib.h>typedef struct ListNode ListNode; ListNode* ListBuyNode(int x) {ListNode* node (ListNode*)malloc(sizeof(ListNode));node…