MATLAB IIR滤波器设计函数buttord与butter(1)

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

举例:

对于以1000 Hz采样的数据,设计一个低通滤波器,其0至40 Hz的通带中的波纹不应超过3 dB,阻带的衰减至少应为60 dB。 查找滤波器阶数和截止频率。

Wp = 40/500;
Ws = 150/500;
[n,Wn] = buttord(Wp,Ws,3,60)
结果为:
n = 5
Wn = 0.0810

根据二阶部分指定滤波器,并绘制频率响应。

[z,p,k] = butter(n,Wn);
sos = zp2sos(z,p,k);
freqz(sos,512,1000)
title(sprintf('n = %d Butterworth Lowpass Filter',n))

结果为:

2、butter

[b,a] = butter(n,Wn)

[b,a] = butter(n,Wn,ftype)

[z,p,k] = butter(___)

[A,B,C,D] = butter(___)

[___] = butter(___,'s')

[b,a] = butter(n,Wn)返回归一化截止频率Wn的n阶低通数字巴特沃斯滤波器的传递函数系数。 例 [b,a] = butter(n,Wn,ftype)根据ftype的值和Wn的元素数来设计低通,高通,带通或带阻Butterworth滤波器。最终的带通和带阻设计约为2n。 注意:有关影响形成传递函数的数值问题的信息,请参阅限制。 例 [z,p,k] = butter(___)设计一个低通,高通,带通或带阻数字巴特沃斯滤波器,并返回其零,极点和增益。该语法可以包括先前语法中的任何输入参数。 例 [A,B,C,D] = butter(___)设计一个低通,高通,带通或带阻数字Butterworth滤波器,并返回指定其状态空间表示形式的矩阵。 例 [___] = butter(___,'s)设计一个截止角频率为Wn的低通,高通,带通或带阻模拟巴特沃斯滤波器。

n —滤波器阶数 整数标量 滤波器的阶数,指定为整数标量。

数据类型:双精度

(1)Wn-截止频率
标量| 二元向量
截止频率,指定为标量或二元素矢量。 截止频率是滤波器的幅度响应为1 /√2的频率。

如果Wn是标量,则butter将设计一个截止频率为Wn的低通或高通滤波器。
如果Wn是二元素矢量[w1 w2],其中w1 <w2,则butter设计一个具有较低截止频率w1和较高截止频率w2的带通或带阻滤波器。
对于数字滤波器,截止频率必须在0到1之间,其中1对应于奈奎斯特速率-采样速率的一半或πrad / sample。
对于模拟滤波器,截止频率必须以弧度/秒表示,并且可以取任何正值。
数据类型:双精度

(2)

ftype —过滤器类型
“low” | “bandpass” | ‘high’| ‘stop’
过滤器类型,指定为以下之一:

“low”指定截止频率为Wn的低通滤波器。 “low”是标量Wn的默认值。
“high”指定截止频率为Wn的高通滤波器。
如果Wn是一个二元素矢量,则“ bandpass”指定2n阶的带通滤波器。 当Wn具有两个元素时,默认设置为’bandpass’。
如果Wn是二元素矢量,则“ stop”指定2n阶的带阻滤波器。

(3)b,a-传递函数系数
行向量
滤波器的传递函数系数,对于低通和高通滤波器,返回为长度n + 1的行向量;对于带通和带阻滤波器,返回为2n + 1的行向量。

对于数字滤波器,传递函数用b和a表示为

对于模拟滤波器,传递函数用b和a表示为

z,p,k-零点,极点和增益
列向量,标量
滤波器的零点,极点和增益作为长度为n的两个列向量(对于带通和带阻设计为2n)和一个标量返回。

对于数字滤波器,传递函数用z,p和k表示为

A,B,C,D —状态空间矩阵
矩阵
过滤器的状态空间表示形式,以矩阵形式返回。 如果对于低通和高通设计,m = n,对于带通和带阻滤波器,m = 2n,则A为m×m,B为m×1,C为1×m,D为1×1。

对于数字滤波器,状态空间矩阵通过以下方式将状态向量x,输入u和输出y相关联:

举例:

设计一个截止频率为300 Hz的6阶低通巴特沃斯滤波器,对于以1000 Hz采样的数据,其对应于rad / sample。 绘制其幅度和相位响应。 用它来过滤1000个样本的随机信号。

fc = 300;
fs = 1000;

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

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

设计6阶Butterworth带阻滤波器归一化的边沿频率为rad/sample。
绘制其幅度和相位响应。 用它来过滤随机数据。

[b,a] = butter(3,[0.2 0.6],'stop');
freqz(b,a)

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

高通巴特沃斯滤波器

设计一个9阶高通巴特沃斯滤波器。 指定300 Hz的截止频率,对于以1000 Hz采样的数据,它对应于rad / sample。 绘制幅度和相位响应。 将零,极点和增益转换为二阶部分,以供fvtool使用。

[z,p,k] = butter(9,300/500,'high');
sos = zp2sos(z,p,k);
fvtool(sos,'Analysis','freq')

带通巴特沃斯滤波器

设计一个20阶Butterworth带通滤波器,其较低的截止频率为500 Hz,较高的截止频率为560 Hz。 指定1500 Hz的采样率。 使用状态空间表示。 使用designfilt设计一个相同的过滤器。

[A,B,C,D] = butter(10,[500 560]/750);
d = designfilt('bandpassiir','FilterOrder',20, ...
    'HalfPowerFrequency1',500,'HalfPowerFrequency2',560, ...
    'SampleRate',1500);

将状态空间表示形式转换为二阶部分。 使用fvtool可视化频率响应。

sos = ss2sos(A,B,C,D);
fvt = fvtool(sos,d,'Fs',1500);
legend(fvt,'butter','designfilt')

模拟IIR低通滤波器的比较

设计一个截止频率为2 GHz的5阶模拟Butterworth低通滤波器。 乘以将频率转换为每秒弧度。 计算滤波器在4096点的频率响应。

n = 5;
f = 2e9;

[zb,pb,kb] = butter(n,2*pi*f,'s');
[bb,ab] = zp2tf(zb,pb,kb);
[hb,wb] = freqs(bb,ab,4096);

Design a 5th-order Chebyshev Type I filter with the same edge frequency and 3 dB of passband ripple. Compute its frequency response.

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

88446769)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值