FIR数字滤波器设计及MATLAB实现

news2024/11/20 13:37:21

摘要:FIR数字滤波器是数字信号处理中得重要组成部分。本文主要介绍了利用MATLAB软件采用窗函数法设计符合指标的FIR数字滤波器。该方法也是窗函数法设计FIR数字滤波器的一般方法。

一、设计目的

MATLAB是一款功能强大的软件,它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,代表了当今国际科学计算软件的先进水平。用MATLAB设计FIR数字滤波器的过程就是其一大应用,在设计过程中我们可以锻炼自己的编程水平及MATLAB的应用水平,同时还能巩固课堂的学习到的理论知识。

二、设计任务

利用窗函数法设计一个线性相位FIR低通滤波器,要求通带临界频率fp=2KHz,阻带临界频率fs=4KHz,通带内的最大衰减Rp=1dB,阻带内的最小衰减Rs=50db,采样频率Fs=22KHz。

三、窗函数设计滤波器原理

窗函数设计滤波器的主要过程是:

(1)确定技术指标。在进行一个滤波器的设计之前,首先必须根据实际工程需要确定滤波器的技术指标。给出的指标内容一般是通带截止频率

、阻带截止频率

、通带最大衰减

、阻带最小衰减

。运用线性相位响应的指标进行滤波器设计具有如下优点:①只包含实数算法;②不存在延时失真;

长度为N的滤波器(阶数为N-1),计算量为N/2的数量级。

(2)逐渐逼近。确定技术指标以后,就可以建立一个目标的数字滤波器模型。一般是先考虑理想滤波器,然后根据实际的设计进行逼近理想结果。

其窗函数设计FIR滤波器的主要思想就是构造一个实际的滤波器频率响应函数

来逼近理想的频率响应

,通过要求所给出的指标来确定所需要的窗函数的类型,同时可通过计算获得窗口的长度,通过窗口函数对理想频率响应函数进行截短,获得实际的频率响应函数。即:

                       h(n)=w(n)

其中:

            

                 

=

但是在截短的过程中应该注意,所选窗的长度不一定总是符合要求,一般需要经过多次的试验才能得到满意的结果。

各种窗函数的性能表格如下:

名称

  主 瓣 带 宽

  过 渡 带 宽

最 小 阻 带 衰 减

Boxcar (矩形)

4

/M

1.8

/M

21dB

Bartlet  (巴特利特)

8

/M

4.2

/M

25dB

Hanning (汉宁)

8

/M

6.2

/M

44dB

Hamming(哈明)

8

/M

6.6

/M

51dB

Blackman(布莱克曼)

12

/M

11

/M

74dB

四、设计步骤

用窗函数法设计FIR数字滤波器的步骤如下:

1.根据对阻带衰减及过渡带的指标要求选择窗函数的类型,并估计窗口长度N。先按照阻带衰减选择窗函数类型。原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣窄的窗函数。然后根据过渡带宽度估算窗口长度。

2.构造希望逼近的频率响应函数。

3.按照公式

计算

4.加窗得到设计结果。

五、MATLAB实现过程

clear;close all;clc;

fp=2000;fs=4000;Ap=1;As=50;Fs=22000;

ws=2*fs/Fs;wp=2*fp/Fs;

Bt=ws-wp;

N0=ceil(6.6/Bt);

N=N0+mod(N0,2)

wc=(ws+wp)/2

n=0:N-1;a=(N-1)/2;

hdn=sin(wc*pi*((n-a)+eps))./(pi*((n-a)+eps));

hn=fir1(N-1,wc,hamming(N))

freqz(hn,1,512,Fs);grid on;

N =

38

wc =

0.2727

hn = [

-0.0002    0.0010    0.0020    0.0019   -0.0006   -0.0047

-0.0073   -0.0042    0.0056    0.0167    0.0188    0.0041

-0.0239   -0.0470   -0.0403    0.0119    0.1025    0.2002

0.2635    0.2635    0.2002    0.1025    0.0119   -0.0403

-0.0470   -0.0239    0.0041    0.0188    0.0167    0.0056

-0.0042   -0.0073   -0.0047   -0.0006    0.0019    0.0020

0.0010   -0.0002                                       ]

图像如下:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用python实现短线选股

经常做短线的朋友都知道,选股是个较为复杂的工作,尤其是像我们这种非职业选手,下面就分享一些通过python实现选股的思路。 股票信息获取 炒短线离不开龙虎榜,我们先来通过龙虎榜来进行股票选择 url https://applhb.longhuvip…

深入网络底层,了解Linux系统收发网络数据包的过程、原理、流程,附图文说明

深入网络底层,了解Linux系统收发网络数据包的过程、原理、流程,附图文说明。 Linux 服务器收到网络数据包,需要经过哪些处理,一步步将数据传给应用进程的呢?应用进程发送数据包时,Linux 又是如何操作将数据…

【Rust日报】2023-09-15 RustRover:JetBrains单行版Rust IDE

RustRover:JetBrains单行版Rust IDE 深入了解 RustRover 的公共预览版,这是我们专为 Rust 开发人员设计的新 IDE!体验其先进功能,并根据您的反馈帮助塑造其未来。现在就成为第一批探索它的人吧! X post: https://x.com…

智能家居产品公司网站源码,自适应布局设计,带完整演示数据

适合各类智能家居电子产品使用的网站源码,深色大气设计,自适应布局设计,pc手机均可完美适配,带完整演示数据。 独家原创资源。源码是asp开发的,数据库是access,主流的虚拟主机空间都支持asp,直…

2.数据分析报告制作

文章目录 2. 数据分析报告制作2.1 产品基础信息2.2 产品生命周期2.4 产品发展情况2.4 核心业务逻辑【重点】2.5潜在运营可能2.6 用戶决策流程2.7 典型用户场景 2. 数据分析报告制作 2.1 产品基础信息 产品介绍 今日头条是一款基于用户和信息数据挖掘的…

多输入多输出 | MATLAB实现CNN-BiGRU卷积双向门控循环单元多输入多输出

多输入多输出 | MATLAB实现CNN-BiGRU卷积双向门控循环单元多输入多输出 目录 多输入多输出 | MATLAB实现CNN-BiGRU卷积双向门控循环单元多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现CNN-BiGRU卷积双向门控循环单元多输入多输出&#xf…

Truenas scale 配置 TrueChart zerotier

起源 Official zerotier 总是在系统重启或者服务重启后,会丢失之前配置的IP等信息,使用,转投 TrueChart zerotier 步骤 TrueChart 官方步骤,按这个配置完还是不能使用,需要后续设置。 添加TrueChart步骤到应用库的步…

pickle反序列化RCE分析

pickle反序列化 一. pickle模块1.1 什么是pickle模块1.2 常用函数1.3 魔术方法 二. 例题[[BUUOJ]HFCTF 2021 Final]2.1 题目分析2.2 payload 三. opcode编写3.1 为什么要用到opcode3.2 什么是opcode3.3 常见的指令符3.4 opcode执行原理3.5 R指令被禁绕过3.6 构造示例3.7 一些ti…

can‘t sync to target.

飞翔仿真器 无法 与S12单片机 建立联系,仿真时显示 cant sync to target. 但是使用仿真器与其他板子连接仿真是没问题的。 首先怀疑硬件问题:没发现问题; 然后,勇敢的点击菜单中 设置速度,根据自己晶振和建议设置如…

看完这篇 教你玩转渗透测试靶机Vulnhub——Grotesque:2

Vulnhub靶机Grotesque:1.0.1渗透测试详解 Vulnhub靶机介绍:Vulnhub靶机下载:Vulnhub靶机安装:①:信息收集:②:暴力破解:③:SSH登入:④:提权&#…

Java中double类型保留小数点后两位的方法

1.String类的format方法 package com.yushifu.problem; //java中double保留两位小数的方法 import java.util.Scanner; public class Demo01 {public static void main(String[] args) {//Practice:键盘输入数据,以保留小数点后两位的格式输出键盘输入的数据。doub…

Linux CentOS7 history命令

linux查看历史命令可以使用history命令,该命令可以列出所有已键入的命令。 这个命令的作用可以让用户或其他有权限人员,进行审计,查看已录入的命令。 用户所键入的命令作为应保存的信息将记录在文件中,这个文件保存就是家目录中…

ApplicationContext版本的快速入门

ApplicationContext快速入门 ApplicationContext称为Spring容器,内部封装了BeanFactory,比BeanFactory功能更加丰富和强大,使用ApplicationContext进行开发时,xml配置文件的名称习惯写成applicationContext.xml。 BeanFactory和…

上海交通大学生存手册

强烈建议去看看《上海交通大学生存手册》,内容可能有点长,但讲得很好,说出了大学教育的本质。如果几年前我能看到它,也许我的大学生活可能会不一样。 只是,没有如果。 那么我把这本手册推荐给正在上大学或者是将要上…

网络协议学习地图分享

最近在回顾网络知识点的时候,发现华为数通有关报文格式及网络协议地图神仙网站,这里涵盖了各个协议层及每个协议层对应的协议内容,最人性的化的一点是点击每个单独的协议可以跳转到该协议详细报文格式页面,有对应的说明和解释&…

芯片工程师求职题目之CPU篇(4)

1. 在组相联cache中,用于替换cache line的算法有哪些? LRU(Least Recently Used)算法:该算法会跟踪每个cache line的age(年龄)情况,并在需要时替换掉近期最少使用的cache line。MRU(Most Recently Used)算法:这与LRU相…

TCP/IP、DTN网络通信协议族

TCP/IP 从 19 世纪 60 年代计算机网络发展开始,网络协议技术已经经历了半个多世纪的发展,地面互联网已经形成了以传输控制协议(TCP)/IP 协议体系为主的网络架构。TCP/IP体系发源于计算机网络,是一种以主 机为中心的网…

CountDownLatch 使用例子和代码流程

目录 CountDownLatch意思理解普通多线程运行Thread.join()实现CountDownLatch实现CountDownLatch流程new CountDownLatch(3)countDown 方法await方法 CountDownLatch意思理解 单词1: countdown 常见释义: 英[ˈkaʊntdaʊn] 美[ˈkaʊntdaʊn] n. 倒数读秒,倒计时(…

王江涛十天搞定考研词汇

学习目标: 考研词汇 学习内容: 2023-9-17 第一天考研词汇 学习时间: 2023-9-17 学习产出:A intellect智力;知识分子intellectual智力的;聪明的intellectualize使...理智化,对...做理性探索c…

ros2学习笔记:shell环境变量脚本setup.bash[-z][-n][-f]参数作用

-n作用 [ -n 字符串 ] or [ 字符串 ] 字符串的长度为非零(有内容)则为真。加-n与不加-n结果相同。 -z作用 [ -z 字符串 ] 字符串的长度为零则为真。 字符串为空即NULL时为真,与上面的-n相反。 -f作用 [ -f FILE ] 如果 FILE 存在且是一…