c语言butter函数,butter函数
说明
巴特沃斯滤波器设计
语法
[z,p,k]=butter(n,Wn) [z,p,k] =
butter(n,Wn,'ftype')
[b,a]=butter(n,Wn)
[b,a]=butter(n,Wn,'ftype')
[A,B,C,D]=butter(n,Wn)
[A,B,C,D] =
butter(n,Wn,'ftype')
[z,p,k]=butter(n,Wn,'s')
[z,p,k] =
butter(n,Wn,'ftype','s')
[b,a]=butter(n,Wn,'s')
[b,a]=butter(n,Wn,'ftype','s')
[A,B,C,D]=butter(n,Wn,'s')
[A,B,C,D] =
butter(n,Wn,'ftype','s')
描述
butter
用来设计低通、带通、高通、和带阻数字和模拟的巴特沃斯滤波器。巴特沃斯滤波器的特征是通带内幅度响应最大平坦,且整体上是单调的。
巴特沃斯滤波器牺牲了在通带和阻带内的单调衰减陡度。除非需要巴特沃斯滤波器的平滑性,椭圆或切比雪夫滤波器可以用更小的滤波器阶数获得更陡峭的衰减特性。
数字域
[z,p,k] =
butter(n,Wn)
设计一个阶数为n,归一化截止频率为Wn的低通数字巴特沃斯滤波器。此函数用n列的向量z和p返回零点和极点,以及用标量k返回增益。
[z,p,k] =
butter(n,Wn,'ftype')
设计一个高通、低通或带阻滤波器,字符串'ftype'取值是:
'high'
用于设计归一化截止频率为Wn的高通数字滤波器
'low'
用于设计归一化截止频率为Wn的低通数字滤波器
'stop'
用于设计阶数为2*n的带阻数字滤波器,Wn应该是有两个元素的向量Wn=[w1 w2]。阻带是w1
< ω < w2.
截止频率 是幅度响应为处的的频率。对巴特沃斯滤波器,归一化截止频率Wn必须是介于0和1之间的数,这里的1对应于尼奎斯特频率,即每秒π弧度(π
rad/s)。
如果Wn是含有两个元素的向量,Wn=[w1 w2],butter 返回阶数为
2*n的数字带通滤波器,通频带为w1 < ω
< w2.
通过返回不同数量的输出参数,butter
直接地得到其它的滤波器实现。要获得传输函数形式,使用如下所示的两个输出参数。
注意 参考下面的限制 了解关于影响形成传输函数的数值问题。
[b,a] = butter(n,Wn)
设计一个阶为n,归一化截止频率为Wn的数字低通巴特沃斯滤波器。它返回滤波器系数在长度为n+1的行向量b和a中,这两个向量包含z的降幂系数。
[b,a] =
butter(n,Wn,'ftype')
设计一个高通、低通或带阻滤波器,字符串'ftype' 是上面描述的'high'、
'low'、或 'stop'。
要获得状态空间形式,使用下面所示的4个输出参数:
[A,B,C,D] =
butter(n,Wn) 或
[A,B,C,D] =
butter(n,Wn,'ftype') 其中 A、
B,、C,、和D 是
并且u是输入, x是状态向量, y 是输出。
模拟域
[z,p,k] = butter(n,Wn,'s')
设计一个阶n,截止角频率为Wn
rad/s的模拟低通巴特沃斯滤波器。它返回零点和极点在长n或2*n的列向量z和p中,标量k返回增益。butter的截止角频率Wn必须大于0
rad/s。
如果Wn是有两个元素w1
butter(n,Wn,'s') 返回阶 2*n
带通模拟滤波器,其通带是w1 < ω <
w2。
[z,p,k] =
butter(n,Wn,'ftype','s')
通过使用上面描述的ftype 值可以设计一个高通、低通或带阻滤波器。
只要返回不同数量的输出参数,butter
可以直接地获得其它的模拟滤波器实现。要获得传输函数形式,使用如下所示的两个输出参数:
[b,a] =
butter(n,Wn,'s') 设计一个阶n、截止角频率为Wn
rad/s的模拟低通巴特沃斯滤波器。它返回滤波器的系数在长n+1的行向量b和a中,这两个向量包含下面这个传输函数中s的降幂系数:
[b,a] =
butter(n,Wn,'ftype','s')
通过设置上面描述的ftype 值,可以设计一个高通、低通或带阻滤波器。
要获得状态空间形式,使用下面的四个参数:
[A,B,C,D] =
butter(n,Wn,'s') 或
[A,B,C,D] =
butter(n,Wn,'ftype','s')
其中A、 B、 C、和D 是
并且u 作为输入, x 是状态向量, y
是输出。
举例
高通滤波器
对于1000Hz的采样,设计一个9阶高通巴特沃斯滤波器,截止频率300Hz,相应的归一化值为0.6:
[z,p,k] = butter(9,300/500,'high');
[sos,g] = zp2sos(z,p,k); % 转换为二次分式表示形式
Hd = dfilt.df2tsos(sos,g); % 创建dfilt对象
h = fvtool(Hd); % 绘制幅度响应
set(h,'Analysis','freq') % 显示频率响应
通常,你应该使用[z,p,k]
语法来设计IIR滤波器。要分析或实现你的滤波器,那你可以用[z,p,k]输出调用的zp2sos
以及一个二次分式dfilt结构。更高阶的滤波器(可能开始于8阶)
,当用[b,a]语法形成传输函数时,或许会由于舍入误差而发生数值问题。下面的例子说明了这个局限性:
n = 6;
Wn = [2.5e6 29e6]/500e6;
ftype = 'bandpass';
% 传输函数设计
[b,a] = butter(n,Wn,ftype);
h1=dfilt.df2(b,a); % 这是一个不稳定滤波器
% 零点-极点-增益 设计
[z, p, k] = butter(n,Wn,ftype);
[sos,g]=zp2sos(z,p,k);
h2=dfilt.df2sos(sos,g);
% 绘制并比较结果
hfvt=fvtool(h1,h2,'FrequencyScale','log');
legend(hfvt,'TF Design','ZPK Design')
算法
butter 使用五步算法:
用buttap 查找模拟低通原型极点、零点和增益。
转换极点、零点和增益到状态空间形式。
使用状态空间变换,将低通滤波器变换为具有期望的截止频率的带通、高通、带阻滤波器。
对于数字滤波器设计,butter
使用bilinear函数通过具有频率预畸变的双线性变换将模拟滤波器变换为数字滤波器。精心的频率调整保证模拟滤波器和数字滤波器在Wn或w1和w2处有相同的频率响应幅度。
它将状态空间滤波器转换回所需的传输函数或
零点-极点-增益 形式。
c语言butter函数,butter函数相关推荐
- c语言计算字符串的函数是什么,字符函数
字符函数(character function)是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据. 中文名 字符函数 外文名 character function 应用领域 计算机等涉 ...
- R语言使用download.file函数下载网络文件到本地(Download File from the Internet)
R语言使用download.file函数下载网络文件到本地(Download File from the Internet) 目录 R语言使用download.file函数下载网络文件到本地(Down ...
- R语言使用trimws函数:trimws函数去除(删除、remove)字符串头尾的空格
R语言使用trimws函数:trimws函数去除(删除.remove)字符串头尾的空格 目录 R语言使用trimws函数:trimws函数去除(删除.remove)字符串头尾的空格
- R语言stringr包str_dup函数字符串多次复制实战
R语言stringr包str_dup函数字符串多次复制实战 目录 R语言stringr包str_dup函数字符串多次复制实战 #导入stringr包 #仿真数据
- R语言使用integrate函数进行函数积分计算实战
R语言使用integrate函数进行函数积分计算实战 目录 R语言使用integrate函数进行函数积分计算实战 #自定义函数 #积分操作
- R语言stringr包str_count函数计算字符串匹配个数实战
R语言stringr包str_count函数计算字符串匹配个数实战 目录 R语言stringr包str_count函数计算字符串匹配个数实战 #导入stringr包 #仿真数据
- R语言使用R原生函数plot和lines可视化线图、并使用lty参数自定义线条类型、lwd自定义设置线条的粗细、col参数自定义线条颜色(Change R base plot line types)
R语言使用R原生函数plot和lines可视化线图.并使用lty参数自定义线条类型.lwd自定义设置线条的粗细.col参数自定义线条颜色(Change R base plot line types) ...
- R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色、添加抖动数据点jitter、误差条)并在X轴标签下方添加分组对应的统计值(样本数N、中位数、四分位数的间距iqr)
R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色.添加抖动数据点jitter.误差条error bar)并在X轴标签下方添加分组对应的统计值(样本数N.中位数med ...
- R语言使用t.test函数计算两组独立数据的t检验(Independent t-test)
R语言使用t.test函数计算两组独立数据的t检验(Independent t-test) 目录 R语言使用t.test函数计算两组独立数据的t检验(Independent t-test) #仿真数据
最新文章
- python 继承和多态
- 使用SQL语句UPDATE数据,怎样知道是否UPDATE成功
- jSearch(聚搜) v1.1.0 发布,全新视觉体验
- linux 下mongo 基础配置
- 部署必备之Docker
- ubuntu:无法将“ubuntu1804.exe”项识别为cmdlet、函数、脚本文件或可运行程序的名称。【已解决】
- 【讨论】初学者拿到2440、6410 等开发板应该怎么学习?
- 波特率、信息传输速率与带宽的关系
- Python DearPyGui 基础
- Kendo UI开发教程(25): 单页面应用(三) View
- 深圳自然人报税系统的服务器地址,自然人电子税务局扣缴端怎么申报?
- 计算机如何清理c盘,C盘清理,教您怎么给电脑C盘进行清理
- DW制作小三角型教程
- 球面投影 (立体和柱面的投影效果)
- css3技巧——产品列表之鼠标滑过效果translateY(三)
- mysql2003错误如何解决_win7电脑提示数据错误循环冗余检查如何解决
- 高压柜无线测温装置-无线无源温度传感器-安科瑞 顾月
- 支付宝rsa签名 java_支付宝RSA签名
- 五笔中词组的输入技巧
- 九章云极DataCanvas公司深度参编《中国金融科技发展报告2021》蓝皮书