目录

一、FIR 低通、高通、带通、带阻

1、FIR滤波器特点

2、滤波器结构

3、滤波器系数

4、滤波实现

5、FIR 滤波后的群延迟

二、IIR 低通、高通、带通、带阻

 1、IIR滤波器特点

2、滤波器结构

3、滤波器系数

4、滤波实现

5、IIR滤波后的群延迟

三、中值滤波

1、中值滤波特点

2、MidFilterBlock

3、MidFilterRT

四、自适应滤波

1、自适应滤波特点

2、滤波器结构

3、滤波实现

五、样条插补

1、样条插补特点

2、样条函数初始化

3、样条插补实现


一、FIR 低通、高通、带通、带阻

1、FIR滤波器特点

  • FIR 滤波器永远是稳定的(系统只有零点);
  • FIR 滤波器的冲激响应是有限长序列;
  • FIR 滤波器的系统函数为多项式;
  • FIR 滤波器具有线性相位。

2、滤波器结构

void arm_fir_init_f32(arm_fir_instance_f32 * S,uint16_t numTaps,const float32_t * pCoeffs,float32_t * pState,uint32_t blockSize
);

        最终实现的是低通、高通、带通、带阻只和滤波器系数有关。

3、滤波器系数

        点击 Design Filter 按钮以后就生成了所需的滤波器系数,生成滤波器系数以后点击 filterDesigner 界面上的菜单 Targets->Generate C header ,打开后显示如下界面:

4、滤波实现

        实现单点或数组格式的滤波。

void arm_fir_f32(const arm_fir_instance_f32 * S,const float32_t * pSrc,float32_t * pDst,uint32_t blockSize
)

5、FIR 滤波后的群延迟

        波形经过 FIR 滤波器后,输出的波形会有一定的延迟。对于线性相位的 FIR,这个群延迟就是一个常数。但是实际应用中这个群延迟是多少呢? 关于群延迟的数值, filterDesigner 工具箱会根据用户的配置计算好。

二、IIR 低通、高通、带通、带阻

 1、IIR滤波器特点

        IIR 滤波器与 FIR 滤波器相比,具有相位特性差的缺点,但它的的结构简单、运算量小,具有经济、高效的特点,并且可以用较少的阶数获得很高的选择性。因此也得到了广泛应用。

2、滤波器结构

void arm_biquad_cascade_df1_init_f32(arm_biquad_casd_df1_inst_f32 * S,uint8_t numStages,const float32_t * pCoeffs,float32_t * pState
)

        最终实现的是低通、高通、带通、带阻只和滤波器系数有关。

3、滤波器系数

        点击 Design Filter 按钮以后就生成了所需的滤波器系数,生成滤波器系数以后点击 filterDesigner 界面上的菜单 Targets->Generate C header ,打开后显示如下界面:

4、滤波实现

        实现单点或数组格式的滤波。

void arm_biquad_cascade_df1_f32(const arm_biquad_casd_df1_inst_f32 * S,float32_t * pSrc,float32_t * pDst,uint32_t blockSize
)

5、IIR滤波后的群延迟

        波形经过 IIR 滤波器后,输出的波形会有一定的延迟。对于线性相位的 IIR ,这个群延迟就是一个常数。但是实际应用中这个群延迟是多少呢? 关于群延迟的数值, filterDesigner 工具箱会根据用户的配置计算好。

三、中值滤波

1、中值滤波特点

        将滤波阶数设置为 5,即 y = medfilt1(x, 5),表示每 5 个采样值求一次中值。原理和实现如下:函数是取 x(k-2), x(k-1), x(k), x(k+1), x(k+2)的中值作为输出 y(k)。 对于 y(1),只有 x(1), x(2), x(3)存在数值,之前的不存在,对于不存在的补 0。 每 5 个数按从小到大排列后取中值有。

2、MidFilterBlock

        实现数组形式的一段数据的中值滤波。

void MidFilter(float32_t *pSrc, float32_t *pDst, uint32_t blockSize, uint32_t order)

3、MidFilterRT

        实现变量形式的单个数据的中值滤波。

void MidFilterRT(float32_t *pSrc, float32_t *pDst, uint8_t ucFlag, uint32_t order)

四、自适应滤波

1、自适应滤波特点

        自适应滤波器能够根据输入信号自动调整滤波系数进行数字滤波。作为对比,非自适应滤波器有静态的滤波器系数,这些静态系数一起组成传递函数。

        对于一些应用来说,由于事先并不知道需要进行操作的参数,例如一些噪声信号的特性,所以要求使用自适应的系数进行处理。在这种情况下,通常使用自适应滤波器,自适应滤波器使用反馈来调整滤波器系数以及频率响应。

        随着处理器性能的增强,自适应滤波器的应用越来越常见,时至今日它们已经广泛地用于手机以及其它通信设备、数码录像机和数码照相机以及医疗监测设备中

2、滤波器结构

        重点是滤波的步长。

void arm_lms_norm_init_f32(arm_lms_norm_instance_f32 * S,uint16_t numTaps,float32_t * pCoeffs,float32_t * pState,float32_t mu,uint32_t blockSize
);

3、滤波实现

        步长越大,抖动越大,但是平稳速度越快;步长越小,抖动越小,但是平稳速度越慢。

五、样条插补

1、样条插补特点

        DSP 库支持了样条插补,双线性插补和线性插补,我们这里主要介绍样条插补的实现。低阶的样条插值还具有“保凸”的重要性质。在计算机科学的计算机辅助设计和计算机图形学中,样条通常是指分段定义的多项式参数曲线。

2、样条函数初始化

void arm_spline_init_f32(arm_spline_instance_f32 * S,arm_spline_type type,const float32_t * x,const float32_t * y,uint32_t n,float32_t * coeffs,float32_t * tempBuffer
)

3、样条插补实现

void arm_spline_f32(arm_spline_instance_f32 * S,const float32_t * xq,float32_t * pDst,uint32_t blockSize
)

        样条插补的主要作用是使得波形更加平滑。比如一帧是128点,步大小是8个像素,我们可以通过插补实现步长为1, 1024点的波形,本质是你的总步长大小不能变,我们这里都是1024,这个不能变,在这个基础上做插补,效果就出来了。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言_图书管理系统_借阅系统管理

✨✨ 欢迎大家来到小伞的大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 小伞的主页:xiaosan_blog 本文所需对顺序表的理解: 注:由于顺序表实现图书…

表达式基础

文章目录 1、表达式组成1、运算符 2、表达式的分类1、算数运算符1、自增运算符和自减运算2、取余运算(%)3、除法运算(/)4、案例 2、关系运算符3、逻辑运算符4、条件运算符(三目运算符)1、案例 5、赋值运算()1、赋值类型转换2、复合赋值运算 6、逗号运算7、取地址运算(&)8、…

除了合并接口,还有哪些优化 Flask API 的方法?

除了合并接口,还有许多其他方法可以优化 Flask API,以下从性能优化、代码结构优化、安全性优化、错误处理优化等方面详细介绍: 性能优化 1. 使用缓存 内存缓存:可以使用 Flask-Caching 扩展来实现内存缓存,减少对数…

Web服务器配置

配置虚拟主机 通过虚拟主机,可以实现用自定义的域名来访问,并且可以为不同的域名指定不同的站点目录。 配置IP地址和域名的映射关系 申请真实的域名需要一定的费用,为了方便开发,可以通过修改hosts文件来实现将任意域名解析到本…

爬虫逆向实战小记——解决webpack实记

注意!!!!某XX网站实例仅作为学习案例,禁止其他个人以及团体做谋利用途!!! aHR0cHM6Ly9wbW9zLnhqLnNnY2MuY29tLmNuOjIwMDgwL3B4Zi1zZXR0bGVtZW50LW91dG5ldHB1Yi8jL3B4Zi1zZXR0bGVtZW5…

蓝桥杯 之 前缀和与查分

文章目录 题目求和棋盘挖矿 前缀和有利于快速求解 区间的和、异或值 、乘积等情况差分是前缀和的反操作 前缀和 一维前缀和: # 原始的数组num,下标从1到n n len(num) pre [0]*(n1) for i in range(n):pre[i1] pre[i] num[i] # 如果需要求解num[l] 到num[r] 的区…

Windows10下本地搭建Manim环境

文章目录 1. 简介2. Python环境3. uv工具4. Latex软件5. 安装Manim数学库6. 中文支持参考 1. 简介 manim是个一科普动画的库, 本文用到的是社区版本。 2. Python环境 这个不用多说,可以参考其他的文章。记得把pip也安上。 3. uv工具 上面的pip是老…

#UVM# 关于field automation机制中的 pack_bytes 和unpack_bytes 函数剖析

一 pack_bytes 函数 在 UVM 中,pack_bytes 函数用于将类中的所有字段打包成一个字节流(byte stream)。这是 UVM 提供的字段自动化(field automation)机制的一部分,用于简化数据打包和传输。 extern function int pack_bytes(ref byte unsigned bytestream[], input uv…

YOLOv8 自定义目标检测

一、引言 YOLOv8 不仅支持预训练模型的推理,还允许用户将其应用于自定义对象检测。本文将详细介绍如何使用 YOLOv8 训练一个新的模型,并在自定义数据集上进行对象检测。 二、数据集准备 1. 数据集格式 YOLOv8 支持多种数据集格式,包括 CO…

关于tresos Studio(EB)的MCAL配置之GPT

概念 GPT,全称General Purpose Timer,就是个通用定时器,取的名字奇怪了点。定时器是一定要的,要么提供给BSW去使用,要么提供给OS去使用。 配置 General GptDeinitApi控制接口Gpt_DeInit是否启用 GptEnableDisable…

Dify 开源大语言模型应用开发平台使用(一)

文章目录 一、创建锂电池专业知识解答应用1.1 应用初始化 二、核心功能模块详解2.1 知识库构建2.2 工作流与节点编排节点类型说明工作流设计示例:锂电池选型咨询 2.3 变量管理 三、测试与调试3.1 单元测试3.2 压力测试3.3 安全验证 四、部署与优化建议4.1 部署配置4…

《Java基础 聊天窗口案例:剖析 GUI、文件 I/O 等关键技术知识》

1. 面向对象编程 类与对象:代码中定义了 Chat 类,它是整个程序的核心,封装了与聊天窗口相关的属性和方法。在 main 方法中创建了 Chat 类的对象,并调用其方法来完成相应的功能。继承与多态:ButtonClickListener 类实现…

IDE集成开发环境MyEclipse中安装SVN

打开Myeclipse的help菜单----install from site 点击add弹出对话框 在输入框中输入对应内容 http://subclipse.tigris.org/update_1.10.x 点击OK之后,会刷新出两个选项,需要选中的 点击next,出现许可的时候选中同意,一直结束等…

归并排序:分治哲学的完美演绎与时空平衡的艺术

引言:跨越世纪的算法明珠 在计算机科学的璀璨星河中,归并排序犹如一颗恒久闪耀的明星。1945年,现代计算机之父冯诺伊曼在EDVAC计算机的研发过程中首次系统性地提出了这一算法,其精妙的分治思想不仅奠定了现代排序算法的理论基础&…

服务器CPU微架构

1、微架构图 前端:预解码、解码、分支预测、L1指令缓存、指令TLB缓存 后端:顺序重排缓存器ROB处理依赖,调度器送到执行引擎 执行引擎:8路超标量,每一路可以进行独立的微操作处理 Port0、1、5、6支持整数、浮点数的加…

SpringBoot调用DeepSeek

引入依赖 <dependency><groupId>io.github.pig-mesh.ai</groupId><artifactId>deepseek-spring-boot-starter</artifactId><version>1.4.5</version> </dependency>配置 deepseek:api-key: sk-******base-url: https://api.…

【前端基础】Day 9 PC端品优购项目

目录 1. 品优购项目规划 1.1 网站制作流程 1.2 品优购项目整体介绍 1.3 学习目的 1.4 开发工具以及技术栈 1.5 项目搭建工作 1.6 网站favicon图标 1.7 网站TDK三大标签SEO优化 2. 品优购首页制作 2.1 常见模块类命名 2.2 快捷导航shortcut制作 2.3 header制作 2.4…

OpenMCU(一):STM32F407 FreeRTOS移植

概述 本文主要描述了STM32F407移植FreeRTOS的简要步骤。移植描述过程中&#xff0c;忽略了Keil软件的部分使用技巧。默认读者熟练使用Keil软件。本文的描述是基于OpenMCU_FreeRTOS这个工程&#xff0c;该工程已经下载放好了移植stm32f407 FreeRTOS的所有文件 OpenMCU_FreeRTOS工…

NetBeans 8.2 开发 CIFLog3.5 - 创建WelcomeDemo

NetBeans 8.2 开发 CIFLog3.5 - 创建WelcomeDemo NetBeans 8.2 开发 CIFLog3.5 - 创建WelcomeDemo创建一个基于CIFLog平台的应用系统1. 下载安装CIFLog2. 授权使用3. 解决本地机器码验证错误问题4. 创建一个基于CIFLog平台的应用系统&#xff08;1&#xff09;新建项目&#xf…

ESP8266连接网络实时上传数据

要实现这个功能,可以按照以下步骤进行编程。我们将使用Arduino IDE来编写代码,并结合ESP8266的WiFi库、MQTT库以及Web服务器库来实现。 1. 准备工作 硬件:ESP8266开发板、温度传感器(如DS18B20)、显示屏(如OLED)。软件:Arduino IDE、ESP8266库、PubSubClient库(MQTT)…