MATLAB设计不同类型IIR滤波器 您所在的位置:网站首页 皮带设计计算公式 MATLAB设计不同类型IIR滤波器

MATLAB设计不同类型IIR滤波器

2023-06-26 02:33| 来源: 网络整理| 查看: 265

MATLAB设计不同类型IIR滤波器

设计一个数字低通IIR滤波器,要求通带内的最大衰减为3dB、阻带内的最小衰减为60dB、通带截止频率为1000HZ、阻带截止频率为2000HZ、抽样频率为8000HZ。采用巴特沃斯滤波器阶数计算公式,计算出满足需求的最小滤波器阶数,分别采用butte、cheby1、cheby2、ellip、yulewalk函数设计参数相同的滤波器,画出滤波器的幅频响应曲线,并进行简单的比较。

1.巴特沃斯滤波器参数计算方法

  在设计模拟低通滤波器时给定的技术指标通常有通带截止频率 ϑ \vartheta ϑc 、通带内最大纹波Ap(dB)、阻带截止频率 ϑ \vartheta ϑs ,阻带内的最小衰减As(dB)。巴特沃斯滤波器的最小阶数N可通过以下式子直接计算,即 N ≥ l g ( λ / ϵ ) l g ( ϑ   s   / ϑ   c   ) N\geq\frac{lg(\lambda/\epsilon)}{lg(\vartheta~s~/\vartheta~c~)} N≥lg(ϑ s /ϑ c )lg(λ/ϵ)​ 式中: ϵ = 1 0 0.1 A   p   − 1 \epsilon=\sqrt{10^{0.1A~p~}-1} ϵ=100.1A p −1 ​

λ = 1 0 0.1 A   s   − 1 \lambda = \sqrt{10^{0.1A~s~}-1} λ=100.1A s −1 ​

2.使用MATLAB设计滤波器 fs = 8000; %抽样频率 fc = 2000; %阻带截止频率 fp = 1000; %通带截止频率 Rp = 3; %通带内的最大衰减dB Rs = 60; %阻带内最小衰减dB %计算巴特沃斯滤波器参数 na = sqrt(10^(0.1*Rs)-1); %那慕达 ea = sqrt(10^(0.1*Rp)-1); %伊布系统 N = ceil(log(na/ea)/log(fc/fp)); %采用巴特沃斯滤波器阶数计算公式 %设计滤波器 [Bb,Ba] = butter(N,fp/(fs/2)); %巴特沃斯滤波器 [Eb,Ea] = ellip(N,Rp,Rs,fp/(fs/2)); %椭圆滤波器 [C1b,C1a] = cheby1(N,Rp,fp/(fs/2)); %切比雪夫I型滤波器 [C2b,C2a] = cheby2(N,Rs,fp/(fs/2)); %切比雪夫Ⅱ型滤波器 %yulewalk滤波器 f = [0 fp/(fs/2) fc/(fs/2) 1]; m = [1 1 0 0]; [Yb,Ya] = yulewalk(N,f,m); %求各滤波器的单位脉冲响应(输入为脉冲函数即可) %对比滤波器就是对比滤波器单位脉冲响应的幅频特性 %注意:上一章中fir1设计FIR滤波器没有这一步骤,因为fir1函数直接返回的就是 %单位脉冲响应,而这里的butter等函数只是返回分子分母系数。 delta = [1 zeros(1,511)]; %长度为512的脉冲函数 fB = filter(Bb,Ba,delta); %巴特沃斯滤波器的单位脉冲响应 fE = filter(Eb,Ea,delta); %椭圆滤波器的单位脉冲响应 fC1 = filter(C1b,C1a,delta);%切比雪夫I型滤波器的单位脉冲响应 fC2 = filter(C2b,C2a,delta);%切比雪夫Ⅱ型滤波器的单位脉冲响应 fY = filter(Yb,Ya,delta); %yulewalk滤波器的单位脉冲响应 %求各滤波器单位脉冲响应的幅频响应 fB = 20*log10(abs(fft(fB))); fE = 20*log10(abs(fft(fE))); fC1 = 20*log10(abs(fft(fC1))); fC2 = 20*log10(abs(fft(fC2))); fY = 20*log10(abs(fft(fY))); %设置幅频响应的横坐标(单位为HZ) x_f = 0:fs/length(fB):fs/2; fB = fB(1:length(x_f)); fE = fE(1:length(x_f)); fC1 = fC1(1:length(x_f)); fC2 = fC2(1:length(x_f)); fY = fY(1:length(x_f)); %画出其脉冲响应图 plot(x_f,fB,'-',x_f,fE,'.',x_f,fC1,'-.',x_f,fC2,'+',x_f,fY,'*'); xlabel("频率(HZ)");ylabel("幅度(dB)"); legend("butter","ellip","cheby1","cheby2","yulewalk");grid;

最后结果如图所示

在这里插入图片描述

图1 几种滤波器的单位脉冲相应图


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有