滤波器的设计(一)

2023-05-16

滤波器的设计

引言

对实际的控制系统而言,采集到的原始信号往往是有噪声的,而噪声往往会对系统的稳定性能产生隐患;或为了提取有用的控制信号,滤除不必要的频域成分,数字滤波技术必不可少。

滤波器的分类

按频率特性分类:高通、低通、带通和带阻

冲激响应特性分类:

FIR滤波器:有限冲激响应,滤波器的输出只与当前输入和有限历史输入有关,无反馈回路,不存在不稳定的问题,其传递函数只有零点,这种滤波器的冲激响应时间是有限的,在一定时刻后滤波器的输出会为0;

IIR滤波器:无限冲激响应,滤波器的输出不仅与当前和历史输入有关,还和历史输出有关;有反馈,传递函数既有零点也有极点,其冲击序列是无限的时间序列,随着时间的增长,输出可能会变小,但不会为0;

滤波器的截止频率选取

为了确定滤波器的截止频率,我们使用傅里叶变换来确定待滤波信号中的各频率分量信号占比;在matlab中调用快速傅里叶变换函数可以很方便地进行频谱分析(此处频率以赫兹为单位);ps:一般控制系统的频域分析以rad/s为单位,如bode图
matlab进行频谱分析的示例代码如下:(输入信号由自己创建)

%使用simulink输出信号使用快速傅里叶变换进行频谱分析
num=144;
T=10;
Fs=num/T;
Ts=T/num;
t= Ts:Ts:T;%采样步长
y= sim;
N=length(t); %样点个数
plot(t,y);
fs=Fs;%采样频率
df=fs/(N-1) ;%分辨率
f=(0:N-1)*df;%其中每点的频率
Y=fft(y)/N*2;%真实的幅值
%Y=fftshift(Y);
figure(2)
plot(f,abs(Y));
axis([0 fs/2 -inf inf]); 

在这里插入图片描述
这张是原始信号的波形。
在这里插入图片描述
这张是傅里叶变换后的的频域表示(横坐标为频率值,纵坐标为各谐波分量的幅值)。

从频谱分析的结果来看,快速傅里叶变换能准确分离出不同频段的信号和其幅值,值得注意的是,由于香农采样定理,频谱图中频率高于采样频率一半的信号不能完全复现(故频谱只能分析频率在采样频率一半以下的信号)

有了输入信号的频谱图我们便可以根据自己的需要以及信号的频谱特性来确定截止频率,以便得到自己想要的频率范围的信号。

注意:在控制系统的反馈中,一般会结合被控对象的带宽来设置反馈信号的滤波器截止频率,高于系统带宽的信号往往是无意义的噪声(因为系统不能响应高于带宽的信号);

一般来说,宏观机械系统的带宽在50Hz以下,微机电系统可以达到100KHz,电路系统的带宽可达100MHz甚至10GHz以上。

滤波器的波德图

FIR滤波器:

从最基本的滑动均值滤波说起:

以四阶滑动均值滤波为例,离散域传递函数:(1+z-1+z-2+z^-3)/4,从离散域分析,这是一个纯零点系统,无反馈;
我们可以在matlab中画出该离散传递函数的波德图:
方法如下:

num=[1 2 3 4];%离散域传递函数形式:(1+2z^-1+3z^-2+4z^-3)/10
den=[10];
dbode(num,den,0.001)%假设采样频率为1000hz
grid on

在这里插入图片描述

从波德图可以看出,这是一个低通滤波系统,截至频率在110hz左右(-3dB处);截止频率为Fs/n。其中Fs为采样频率。截至频率与采样频率相差越大,滤波器的阶数越高。(如下,采样频率1000hz,截止频率20hz,得到的滤波器127阶)
在这里插入图片描述
FIR由于只有前馈通道,没有反馈,可以不担心稳定性问题,这使得它在处理高速信号的时候具有优势。但是,FIR是非常消耗硬件资源的。使用硬件实现和代码实现均过于繁琐。

IIR滤波器:

反馈系统,最简单的例子是惯性环节;1/Ts+1,这是一个截止频率w约等于1/T的低通滤波器,但是惯性滤波的相位滞后比较严重,幅值曲线下降的也不够快,这时就需要更为高级的滤波器设计方法,如巴特沃斯和切比雪夫滤波器;下图为惯性环节的波德图:

在这里插入图片描述

将滤波器的传递函数表示离散化(欧拉法、双线性变换法)得到差分方程,即可在嵌入式中实现;在具有相同的截止频率时,IIR滤波器的阶数更低。使用matlab自带的fdatool工具箱,选择采样频率和截止频率即可设计需要的FIR,IIR滤波器,能直接给出差分方程形式的表示,直接使用即可。

但是IIR是反馈系统,在高速的信号处理中,即使是使用并行实现,由于计算延迟和有限字长来造成的稳定性仍然是非常有挑战的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

滤波器的设计(一) 的相关文章

  • 【Android抓包】Ubuntu mitmProxy配置

    Ubuntu 安装 mitmProxy 直接使用编译好的二进制包 参考 xff1a https cuiqingcai com 31053 html Linux E4 B8 8B E7 9A 84 E5 AE 89 E8 A3 85 直接下载
  • 【CSDN】查看自己的CSDN积分

    查看自己的CSDN积分 如何查看自己的CSDN博客积分 CSDN藏的比较深 xff0c 链接如下 xff1a https mp csdn net mp blog analysis article all CSDN博客积分与博客等级 参考 x
  • 【符号输入】打出撇号′

    打出撇号 撇号 xff08 apostrophe xff09 xff1a 搜狗输入法调成中文 xff0c 输入fen xff0c 第5个就是撇号
  • 【Android安全】xiaomi手机关闭adb安装应用时的确认提示

    xiaomi手机关闭adb安装应用时的确认提示 为了自动化测试 xff0c 需要关闭adb安装应用时的确认提示 需要分两步来关闭 xff1a 首先 xff0c 开发者选项 gt 启动MIUI优化 gt 关闭 xff08 第一步过后授权管理
  • 【python】报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte in position : illegal multibyte

    python读文件时报错 xff1a Traceback span class token punctuation span most recent call last span class token punctuation span F
  • STM32介绍

    目录 STM32 分类 STM8 和 STM32 分类 STM32 命名方法 STM32F103RCT6 寻找 IO 的功能 存储器映射 存储器 Block0 内部区域功能划分 存储器 Block1 内部区域功能划分 存储器 Block2
  • Putty串口打开无反应

    第一次使用putty的串口 xff0c 可能理所当然认为在Serial那里设置好参数 xff0c 然后点击Open就行了 但是显然不是 xff0c Putty的UI设计有问题 xff0c 不管你点击哪一个项 xff0c Open按钮始终都存
  • 【Android安全】r0capture使用

    r0capture使用 下载地址 xff1a https github com r0ysue r0capture 手机端启动frida server PC端安装frida client 命令 xff1a python r0capture s
  • MobaXterm或Xshell连接不上虚拟机ubuntu

    MobaXterm使用教程 xff1a MobaXterm官网下载 MobaXterm使用教程1 MobaXterm使用教程2 Xshell 使用教程 xff1a 恒源云远程登录Linux实例 包含下载地址和使用教程 Xshell使用教程
  • 591 标签验证器(模拟、栈匹配括号)

    1 问题描述 xff1a 给定一个表示代码片段的字符串 xff0c 你需要实现一个验证器来解析这段代码 xff0c 并返回它是否合法 合法的代码片段需要遵守以下的所有规则 xff1a 代码必须被合法的闭合标签包围 否则 xff0c 代码是无
  • 算法:最长公共子序列

    10 8算法实验报告 最长公共子序列 题目 输出两个字符串的最长公共子序列 要求1 不使用辅助数组 span class token comment 要求1 xff1a 不使用辅助数组 span span class token keywo
  • 呆呆和你谈谈入职CVTE一个月的感受

    呆呆和你谈谈入职CVTE一个月的感受 你盼世界 xff0c 我盼望你无bug Hello 大家好 xff01 我是霖呆呆 xff01 啊啊啊啊啊 至6 18日入职新公司CVTE已经一个多月了 xff0c 在 你盼世界 xff0c 我盼望你无
  • 编程就是调用API?如何成为造轮子的程序员

    是 xff0c 编程就是调用各种API 什么是API xff0c 就是别人把较复杂的代码封装成一个个函数 xff0c 你不用管函数怎么实现的 xff0c 直接用就好 从这个角度讲 xff0c 使用所有库 xff0c 框架 xff0c 模板
  • 【电赛】2019电子设计竞赛 纸张计数显示装置(F题)

    点击 Github项目地址 设计下载 内含 xff1a 电赛论文 程序设计 机械结构设计 硬件电路设计 综合测评相关设计 交互显示设计 设计详细说明 2019年全国大学生电子设计竞赛 纸张计数显示装置 xff08 F题 xff09 本科组
  • 【ARM裸板】LCD硬件原理、时序及初始化

    文章目录 1 LCD与OLED的区别2 LCD原理2 1 颜色如何确定 xff1f 2 2 LCD如何 行扫描 xff1f 2 3 如何跳到下一行进行 行扫描 xff1f 2 4 如何进行下一个 场扫描 xff1f 3 LCD时序4 LCD
  • 【电赛】2019电赛纸张计数显示装置Github仓库说明

    Github项目地址 设计下载 内含 xff1a 电赛论文 程序设计 机械结构设计 硬件电路设计 综合测评相关设计 交互显示设计 设计详细说明 纸张计数显示装置Github仓库说明 x1f604 个人主页 x1f57a 电赛论文 x1f4d
  • 【Linux】mjpg-streamer 源码分析

    文章目录 1 总体流程2 主进程的源码分析2 1 参数接收与解析2 2 获取参数2 3 调用输入函数2 3 1 程序手动中断信号2 3 2 strchr 函数2 3 3 strndup 函数2 3 4 分离参数 3 输入通道源码分析3 1
  • STM32之TIM 舵机控制PWM

    目录 大概步骤 定时器介绍 输入通道 输入滤波器和边沿检测器 捕获通道 定时器初始化结构体详解 1 TIM TimeBaseInitTypeDef 定时器基本初始化结构体 TIM OCInitTypeDef 定时器比较输出初始化结构体 3
  • 【树莓派】树莓派采用MJPG-Streamer双摄推流至上位机,实测延时低至200ms[CSI摄像头+USB摄像头]

    树莓派采用MJPG Streamer双摄推流至上位机 实测延时低至200ms CSI摄像头 43 USB摄像头 总体流程1 硬件连接与软件及驱动配置1 xff09 检测是否存在USB摄像头设备2 xff09 安装 MJPG Streamer

随机推荐

  • 【DIY】基于OpenMV的STM32追球小车

    目录 xff1a 总体设计1 基础硬件DIY设计1 xff09 整体原理图2 xff09 PCB电路 2 OpenMV简单识别程序设计 与 STM32控制程序设计1 xff09 OpenMV简单识别程序设计 microPython 2 xf
  • 【电赛】2017年电赛A题——三相逆变电源EG8030测试

    目录 xff1a 一 相关简介二 专用逆变芯片E8030控制板三 驱动板四 实物测试 xff1a Github项目地址 设计下载 注 xff1a 本文仅用于学习交流分享 xff0c 若有不妥之处 xff0c 请指正 xff0c 感谢 关键词
  • 【STM32】STM32 OLED打点划线画圆 OLED电子罗盘 程序

    目录 xff1a 一 画点函数二 动态划线效果演示 xff1a 三 画圆函数效果演示 四 实心圆函数 注 xff1a 本文仅用于学习分享 用到的工具 xff1a STM32 MCU Keil 5 用到的库函数为 正点原子 STM32F4 库
  • 【STM32】OV2640摄像头学习笔记

    目录 xff1a 一 OV2640 Camera二 读取OV2640模块图像数据过程 xff1a 三 DCMI xff08 Digital camera interface xff09 接口四 SCCB协议1 起始信号2 停止信号 五 OV
  • 【笔记】MS5837-30BA压力传感器调试笔记

    文章目录 一 MS5837 30BA相关介绍1 技术参数2 典型应用电路3 PROM中的标定参数 二 MS5837 30BA数据解算1 解算流程图2 初始化读取标定参数并进行CRC校验 MS5837复位 MS5837 CRC4 bit 校验
  • 【通信协议】1-Wire 单总线

    文章目录 一 1 Wire相关介绍1 典型命令序列 xff1a 2 典型电路图 xff1a 二 1 Wire通信过程1 初始化2 写操作3 读操作 三 1 Wire程序 xff08 以DS18B20为例 xff09 DS18B20功能命令
  • linux 安裝mitmproxy

    1 安装mitmproxy sudo apt install python3 pip amp amp sudo pip3 install U pip amp amp sudo pip3 install mitmproxy 接下来需要安装证书
  • C++ 多态性的一些个人总结

    关于继承 xff1a public继承 xff0c 和其它两种继承方式 xff0c 子类对象可以访问基类的Public成员 xff0c 保护成员和私有成员只能在子类中访问 xff0c 而不能由子类对象进行访问 关于虚函数 xff08 每个虚
  • ubuntu用Dockerfile配置ros+cuda+torch镜像及rviz可视化

    dockerfile配置ros 43 cuda 43 torch镜像及rviz可视化 Dockerfile创建容器 Dockerfile 因工作环境 xff0c 需要有深度学习的那一套环境 xff0c 还要用到一些可视化的东西 xff0c
  • 简单理解TCP/IP协议栈

    协议定义的是一系列的通信标准 xff0c 通信双方需要共同按照这一标准进行正常的数据收发 xff1b 信的双方需要共同按照这一个标准进行正常的数据收发 xff1b xff08 两人 xff0c 说共同的语言 xff0c 不然不能交流 xff
  • ubuntu查看系统版本和linux内核版本

    lsb release a No LSB modules are available Distributor ID Ubuntu Description Ubuntu span class token number 18 04 span 5
  • 电路设计——教你如何阅读数据手册

    我们为什么要看数据手册 xff0c 数据手册又有什么作用呢 xff1f 我们能够从中得到哪些东西呢 xff1f 哪些是我们所需要的呢 xff1f 下面我们以AD847芯片为例来说一说我们在工作中以及设计中需要注意哪些方面 下面是芯片的数据手
  • ORB-SLAM3笔记(编译、踩坑、论文、看代码)

    目前基于orb slam想做的方向 提升动态建图精度 xff08 东西Map就是上不去 KITTI有几个groundtruth官网下架了找不到而且 红外相机退化环境下的点线融合 数据集https sites google com view
  • 【树莓派】Ubuntu-mate安装及ROS安装

    树莓派使用之Ubuntu mate 烧录镜像至SD卡下载镜像烧录SD卡 将SD插入树莓派实物GIF安装流程 树莓派开机sudo reboot换源下载SSH首先得下载net tools下载openssh 电脑远程操作下载 Xshell设置远程
  • 【SLAM】ORB_SLAM3 初步调试运行详细记录

    前言 相关解析及参考 xff1a 超详细解读ORB SLAM3单目初始化 xff08 下篇 xff09 ORB SLAM3和之前版本有什么不同 xff1f 小白学视觉的技术博客 51CTO博客 orbslam3 官方源码地址 xff1a h
  • 如何实现一个简单的Ubuntu远程虚拟桌面

    文章目录 前言一 什么是noVNC xff1f 二 如何部署1 安装VNC服务端1 1 安装tigervnc standalone server1 2 安装tigervnc standalone server1 3 安装xserver xo
  • 软件开发经验总结 读源代码的艺术

    读取源代码是每一个开发人员成长的必经之路 xff0c 一份优秀的源代码 xff0c 是作者多年开发技术的心血结晶 xff0c 研究一份优秀的源代码 xff0c 总是能够让你的技术得到一定程度的提升 然后 xff0c 读别人的源代码并不是拿着
  • vsCode用户设置vue.js、保存格式化代码

    34 window zoomLevel 34 0 34 workbench iconTheme 34 34 vscode icons 34 34 editor wordWrap 34 34 on 34 vscode默认启用了根据文件类型自动
  • PX4姿态控制算法分析

    PX4姿态控制流程图 图片来源 Px4的姿态控制分为角度环 外环 和角速度环 内环 xff0c 角度环使用P控制 xff0c 角速度环使用PID控制 xff0c 由于偏航通道响应较慢 多旋翼飞行器的俯仰和滚转运动由旋翼的升力力矩产生 xff
  • 滤波器的设计(一)

    滤波器的设计 引言 对实际的控制系统而言 xff0c 采集到的原始信号往往是有噪声的 xff0c 而噪声往往会对系统的稳定性能产生隐患 xff1b 或为了提取有用的控制信号 xff0c 滤除不必要的频域成分 xff0c 数字滤波技术必不可少