butter滤波器

news2024/12/26 9:32:38

文章目录

  • 什么是巴特沃斯滤波器?
  • 滤波器的阶数的含义
  • matlab中的butter
  • scipy.signal butter 中有哪些参数,各参数分别是什么含义?

本节围绕以下问题展开

  1. butter 是什么?
  2. 滤波器的阶数是什么意思?
  3. matlab中的butter参数含义及示例
  4. scipy.signal butter 中的参数及示例?
  5. butter 有哪些应用场景

什么是巴特沃斯滤波器?

巴特沃斯滤波器最先由英国工程师斯蒂芬·巴特沃斯(Stephen Butterworth)在1930年发表在英国《无线电工程》期刊的一篇论文中提出的。
巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。 在振幅的对数对角频率的波特图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大。一阶巴特沃斯滤波器的衰减率为每倍频6分贝,每十倍频20分贝。二阶巴特沃斯滤波器的衰减率为每倍频12分贝、三阶巴特沃斯滤波器的衰减率为每倍频18分贝、如此类推。巴特沃斯滤波器的振幅对角频率单调下降,并且也是唯一的无论阶数,振幅对角频率曲线都保持同样的形状的滤波器。只不过滤波器阶数越高,在阻频带振幅衰减速度越快。其他滤波器高阶的振幅对角频率图和低阶数的振幅对角频率有不同的形状。
在这里插入图片描述
Butterworth 滤波器的幅值响应在通带内具有最大平坦度,并在整体上呈现单调性。这种平滑是以降低滚降陡度为代价的。对于给定滤波器阶数,椭圆和 Chebyshev 滤波器通常提供更陡的滚降。

butter 使用一个五步算法:

1.它使用函数 buttap 查找低通模拟原型的极点、零点和增益。
2.它将极点、零点和增益转换为状态空间形式。
3.如果需要,它使用状态空间变换将低通滤波器转换为具有所需频率约束的带通、高通或带阻滤波器。
4.对于数字滤波器设计,它使用 bilinear 通过具有频率预修正的双线性变换将模拟滤波器转换为数字滤波器。经过仔细调整频率,模拟滤波器和数字滤波器在 Wn 或 w1 和 w2 处可具有相同的频率响应幅值。
根据需要,它将状态空间滤波器转换回其传递函数或零极点增益形式。

参考:butterWorth

滤波器的阶数的含义

滤波器的阶数是指在滤波器的传递函数中有几个极点。阶数同时也决定了转折区的下降速度,一般每增加一阶(一个极点),就会增加一20dBDec(一20dB每十倍频程)。
如上图所示,阶数越高,衰减速度越快。

matlab中的butter

参考:Butterworth 滤波器设计
语法:

[b,a] = butter(n,Wn)
[b,a] = butter(n,Wn,ftype)
[b,a] = butter(n, [w1 w2],ftype)
[z,p,k] = butter(___)
[A,B,C,D] = butter(___)

说明:

  • n — 滤波器阶数,滤波器阶数,指定为整数标量。对于带通和带阻设计,n 表示滤波器阶数的一半。
  • Wn — 截止频率 截止频率,指定为标量或二元素向量。截止频率是滤波器幅值响应为 1 / √2 时的频率。 Wn = 截止频率*2/采样频率
    如果 Wn 是标量,则 butter 用于设计截止频率为 Wn 的低通或高通滤波器。
    如果 Wn 是二元素向量 [w1 w2],其中 w1 < w2,则 butter 用于设计截止频率下限为 w1 且截止频率上限为 w2 的带通或带阻滤波器。
    对于数字滤波器,截止频率必须介于 0 与 1 之间,其中 1 对应于奈奎斯特速率(即采样率的一半)或 π 弧度/采样点。
    对于模拟滤波器,截止频率必须用弧度/秒表示,并且可以取任何正值。
  • ftype — 滤波器类型 ‘low’ | ‘bandpass’ | ‘high’ | ‘stop’

示例:
低通 Butterworth 传递函数
设计截止频率为 300 Hz 的 6 阶低通 Butterworth 滤波器,对于以 1000 Hz 的速率采样的数据,截止频率对应于 0.6π 弧度/采样点。绘制其幅值和相位响应。用它对长度为 1000 个采样的随机信号进行滤波。

fc = 300;
fs = 1000;

[b,a] = butter(6,fc/(fs/2));

freqz(b,a,[],fs)

subplot(2,1,1)
ylim([-100 20])

在这里插入图片描述

dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);

ps:freqz:数字滤波器的频率响应

scipy.signal butter 中有哪些参数,各参数分别是什么含义?

scipy.signal.butter

scipy.signal.butter(N, Wn, btype='low', analog=False, output='ba', fs=None)[source]

在这里插入图片描述
在这里插入图片描述
示例1:

from scipy import signal
import matplotlib.pyplot as plt
import numpy as np
b, a = signal.butter(4, 100, 'low', analog=True)
w, h = signal.freqs(b, a)
plt.semilogx(w, 20 * np.log10(abs(h)))
plt.title('Butterworth filter frequency response')
plt.xlabel('Frequency [radians / second]')
plt.ylabel('Amplitude [dB]')
plt.margins(0, 0.1)
plt.grid(which='both', axis='both')
plt.axvline(100, color='green') # cutoff frequency
plt.show()

在这里插入图片描述
示例2:
Generate a signal made up of 10 Hz and 20 Hz, sampled at 1 kHz

t = np.linspace(0, 1, 1000, False)  # 1 second
sig = np.sin(2*np.pi*10*t) + np.sin(2*np.pi*20*t)
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)
ax1.plot(t, sig)
ax1.set_title('10 Hz and 20 Hz sinusoids')
ax1.axis([0, 1, -2, 2])

Design a digital high-pass filter at 15 Hz to remove the 10 Hz tone, and apply it to the signal. (It’s recommended to use second-order sections format when filtering, to avoid numerical error with transfer function (ba) format):

sos = signal.butter(10, 15, 'hp', fs=1000, output='sos')
filtered = signal.sosfilt(sos, sig)
ax2.plot(t, filtered)
ax2.set_title('After 15 Hz high-pass filter')
ax2.axis([0, 1, -2, 2])
ax2.set_xlabel('Time [seconds]')
plt.tight_layout()
plt.show()

在这里插入图片描述
先设计滤波器,然后filter

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

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

相关文章

00后工资太低想转行?选择云计算如何

00后已经成为目前从业最年轻的群体&#xff0c;有活力也需求明确&#xff0c;搞钱已经成为上班最核心的目的。但也有一波比较迷茫的00后&#xff0c;比如原专业学得不好&#xff0c;没有对口就业、工作内容不喜欢、工资太低养不活自己等等。而工资太低也是大部分00后想转行的主…

Linux 服务器设置 jar包开机自启动

一、新建jar包启动sh文件 新建startup.sh脚本文件&#xff0c;启动项目jar包 nohup java -jar test.jar >/dev/null 2>&1 & 二、设置自动启动命令 1.进入rc.d目录 执行cd /etc/rc.d 命令&#xff0c;进入rc.d目录 如图所示&#xff08;示例&#xff09;&…

如何将参考文献格式改成目标期刊要求的格式?

最近在改投期刊&#xff0c;所以要对参考文献的格式进行修改&#xff0c;记录一下修改过程中遇到的问题和解决方法&#xff0c;希望对小伙伴们有所帮助&#xff01; (1)问题&#xff1a;不知道目标期刊的参考文献格式是什么怎么办&#xff1f; (2)解决&#xff1a;下载目标期刊…

论文解读:DeepZ:一种用于Z-DNA预测的深度学习方法

标题 DeepZ: A Deep Learning Approach for Z-DNA Prediction. DOI 10.1007/978-1-0716-3084-6_15 期刊 Methods in molecular biology 作者 Nazar Beknazarov; Maria Poptsova 出版日期 2023-01-01 Github:https://github.com/Nazar1997/Sparse-vector 网址 https://doi…

一篇文章了解 Java IO 流

一&#xff1a;IO 流的概述 1. 什么是 IO 流&#xff1f; 存储和读取数据的解决方法 I&#xff1a;input O&#xff1a;output 流&#xff1a;像水流一样传输数据 2. IO 流的作用&#xff1f; 用于读写数据&#xff08;本地文件&#xff0c;网络&#xff09; 3. IO 流按…

linux系统 数组 的运用

这里写目录标题 数组数组的定义数组的定义方式输出数组的方式数组包括的数据类型数组的删除与追加数组的删除数组的追加 数组切片与替换切片替换 冒泡排序 数组 数组的定义 数组是存放相同类型数据的集合&#xff0c;在内存中开辟了连续的空间&#xff0c;通常配合循环使用 …

爬虫逆向——某建筑市场监管平台的滑块验证码分析

目录 网址链接&#xff1a; 正文&#xff1a; 一、思路分析 二、图片处理 三、完整代码 网址链接&#xff1a; aHR0cHM6Ly9nY3htLmh1bmFuanMuZ292LmNuL2RhdGFzZXJ2aWNlLmh0bWw &#xff08;bs64解密可见&#xff09; 正文&#xff1a; 注&#xff1a;分步的代码为示例…

C语言中数据结构——带头双向循环链表

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;数据结构 &#x1f525;座右铭&#xff1a;“不要等到什么都没…

如何删除打印机任务?三种快速删除打印机任务的方法

打印机用户可能会经常遇到添加错的打印任务&#xff0c;或是一不小心重复选择过多的打印任务&#xff0c;环保人人有责&#xff0c;杜绝纸张浪费&#xff0c;驱动人生就为大家带来快速删除打印任务的方法。 方法一&#xff1a;使用Windows自带的清理功能 在Windows操作系统中…

谷歌全线反击!PaLM 2部分性能已经超越GPT-4

ChatGPT横空出世&#xff0c;所有人都能够明确感知到AI的惊人潜力&#xff0c;瞬间改变了整个AI行业的节奏&#xff0c;不紧不慢的谷歌也开始紧张了。 ChatGPT舆论热潮仍未消退&#xff0c;红色警报又拉响 北京时间5月11日凌晨1点&#xff0c;Google I/O 2023开发者大会上发布…

C++ | 深拷贝和浅拷贝

C 深拷贝和浅拷贝 当类的函数成员存在__指针成员__时会产生深拷贝和浅拷贝和问题。 在进行对象拷贝时会使用默认拷贝构造函数&#xff0c;默认进行浅拷贝&#xff0c;即只会拷贝指针的值&#xff0c;新拷贝的指针与原来的指针指向同一内存&#xff1b; 浅拷贝带来的问题是&…

stm32裸机开发下利用MultiTimer多任务时间片询

stm32裸机开发下利用MultiTimer多任务时间片询 &#x1f4cc;MultiTimerGithub地址&#xff1a;https://github.com/0x1abin/MultiTimer ✨这是一个类似Arduino平台上的Ticker库&#xff0c;如需阅读懂源码&#xff0c;起码需要有链表知识的储备&#xff0c;如果仅仅只是拿来使…

docker学习笔记(二)

目录 启动Docker ​编辑 建立 Docker 用户 ​编辑 测试 Docker 是否正常工作 卸载Docker Docker镜像加速器配置 配置镜像 检查加速器是否生效 如何在Linux中的.json文件下保存并退出 如果我是使用vi操作进来的&#xff0c;我该如何保存并退出呢&#xff1f; 如何在Li…

3 步集成 Terraform + 极狐GitLab CI ,实现基础设施自动化管理

本文来自&#xff1a;极狐GitLab 开发者社区 作者&#xff1a;KaliArch 利用极狐GitLab CI 实现基础设施编排自动化后&#xff0c;用户就可以使用极狐GitLab 进行基础设施管理&#xff1a;提交基础设施变更后&#xff0c;会触发 MR 进行极狐GitLab CI 流水线执行&#xff0c;从…

电视盒子什么牌子好?数码小编分享2023热销电视盒子排行榜

整理私信的时候有朋友希望我能分享电视盒子排行榜&#xff0c;对不了解电视盒子什么牌子好的朋友们来说&#xff0c;选购电视盒子时很容易踩雷&#xff0c;因此我根据各大电商平台的销量数据整理了最新热销电视盒子排行榜&#xff0c;对电视盒子感兴趣的朋友们可以了解一下。 ●…

时序预测 | Python实现AR、ARMA、ARIMA时间序列预测

时序预测 | MATLAB实现VAR和GARCH时间序列预测 目录 时序预测 | MATLAB实现VAR和GARCH时间序列预测预测效果基本介绍模型原理程序设计参考资料预测效果 基本介绍 Python实现AR、ARMA、ARIMA时间序列预测 模型原理 AR、ARMA、ARIMA都是常用的时间序列预测方法,它们的主要区别在…

功能优化升级,添加更丰富的刷题练习设置|会员权益、答题后显示数据、切题按钮、进入小组必设昵称、小组统计筛选条件、考试排行榜、优化缓存机制

土著刷题微信小程序v1.14&#xff0c;主要是针对用户在使用期间提的一些优化建议&#xff0c;经过评估后进行优化升级的一次版本&#xff0c;下面将逐条介绍一下这一版的优化点。 01 会员权益页面 通过对用户提出的问题进行归纳总结&#xff0c;部分用户在购买VIP时&#xff0c…

【git】修改作者和提交者信息

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 修改git作者和提交者信息 1. 正文 1.1 前提 1.1.1 作者和提交者 作者就是我们git log看到的信息&#xff0c;如下&#xff1a; 其修改方式参考&…

linux应用编程

项目内容 开发板内部使用c语言调用硬件驱动实现各种测试功能&#xff0c;保存测试结果。 外部程序通过socket接口使用tcp协议与开发板通信进行信息传输&#xff0c; 最后使用python GUI构造一个界面按照测试顺序逐步显示出各个模块的测试结果 测试包括&#xff1a;485-232uart、…

(十四)地理数据库创建——进一步定义数据库②

&#xff08;十四&#xff09;地理数据库创建——进一步定义数据库② 目录&#xff08;接上篇&#xff09; &#xff08;十四&#xff09;地理数据库创建——进一步定义数据库② 4.创建注释类4.1建立注释类4.2产生连接要素注释 5.创建几何网络5.1几何网络概述5.2建立几何网络 6…