双线性映射matlab,matlab用双线性变换法设计IIR数字滤波器

实验三:用双线性变换法设计IIR数字滤波器

一.实验目的:

(1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法。

(2)掌握数字滤波器的计算机仿真方法。

(3)通过观察对实际心电图信号的滤波作用,获得数字滤波的感性知识。

二.实验内容及步骤:

(1) 用双线性变换法设计一个巴特沃斯低通IIR数字滤波器,设计指标参数为:在通带内频率低于0.2pi时,最大衰减小于1dB;在阻带内[0.3pi , pi] 频率区间上,,最小衰减大于15dB;

(2) 以0.02pi为采样间隔,打印出数字滤波器在频率区间[ 0, 0.5pi]上的幅频响应特性曲线;

(3) 用所设计的滤波器对实际心电图信号采样序列(在本实验后面给出)进行仿真滤波处理,并分别打印出滤波前后的心电图波形图,观察总结滤波作用与效果。

三.实验原理与方法:

(1)复习有关巴特沃斯模拟滤波器设计和用双线性变换法设计IIR数字滤波器的内容,用双线性变换法设计数字滤波器系统函数H(z)。

根据设计指标,调用MA TLAB工具箱函数buttord和butter,也可得到H(z)。

(2)编写滤波器仿真程序,计算H(z)对心电图信号采样序列x(n)的相应序列y(n)。

(3)在通过计算机上运行仿真滤波程序,并调用通用绘图子程序,完成实验内容(2)和(3)。四.实验主要仪器设备和材料

计算机。MATLAB7.0或以上版本

五.实验报告要求

(1)简述实验目的及原理;

(2)由所打印的特性曲线及设计过程简述双线性变换法的特点;

(3)对比滤波前后的心电图信号波形,说明数字滤波器的滤波过程与滤波作用;

(4) 简要回答思考题.

六.实验步骤

心电图信号采样序列样式本x(n)

{ x(n) } = { -4 , -2, 0, -4, -6, -4, -2, -4, -6, -6, -4, -4, -6, -6, -2, 6, 12, 8, 0, -16

-38, -60, -84, -90, -66, -32, -4, -2, -4, 8,12, 12 , 10, 6, 6, 6, 4, 0, 0, 0

0, 0, -2, -4, 0, 0, 0, -2, -2, 0,0 , -2,, -2, -2, -2, 0}

程序代码

x=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10 ,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0];

k=1;

close all;

figure(1);

subplot(2,2,1);

n=0:55;

stem(n,x,'.');

axis([0,56,-100,50]);

xlabel('n');

ylabel('x(n)');

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用双线性变换设计IIR数字滤波器MATLAB代码示例: ```matlab fs = 44100; % 采样率 fc = 1000; % 截止频率 order = 2; % 滤波器阶数 b = [1, 0, 0]; % 分子系数 a = [1, 0.1, 1]; % 分母系数 % 双线性变换函数 [bz, az] = bilinear(b, a, fs, fc); disp('双线性变换后的系数:'); disp(['b[0]: ', num2str(bz(1))]); disp(['b[1]: ', num2str(bz(2))]); disp(['b[2]: ', num2str(bz(3))]); disp(['a[0]: ', num2str(az(1))]); disp(['a[1]: ', num2str(az(2))]); disp(['a[2]: ', num2str(az(3))]); % 双线性变换函数 function [bz, az] = bilinear(b, a, fs, fc) wc = 2 * pi * fc / fs; wcp = tan(wc / 2); a1 = 2 * fs - 2 * wcp; a2 = 2 * fs + 2 * wcp; if length(a) == 3 a0 = 1; a1z = (a1 + sqrt(a1^2 - 4 * a(3))) / 2 / a(1); a2z = (a1 - sqrt(a1^2 - 4 * a(3))) / 2 / a(1); az = [a0, -a1z, -a2z]; elseif length(a) == 2 a0 = 1; a1z = a1 / a(1); a2z = a2 / a(1); az = [a0, -a1z, -a2z]; end bz = b / a(1) * [1, a1z, a2z]; end ``` 在这个例子中,我们同样使用了双线性变换来将模拟滤波器的系数转换为数字滤波器的系数。`fs` 和 `fc` 分别表示采样率和截止频率,`order` 表示滤波器的阶数,`b` 和 `a` 数组分别表示模拟滤波器的分子系数和分母系数。 在函数 `bilinear` 中,我们首先计算了截止频率的模拟角频率 `wc` 和双线性变换的参数 `wcp`,然后根据公式计算了双线性变换的系数。最后,将计算得到的系数存储到 `bz` 和 `az` 数组中,并输出结果。 需要注意的是,在实际应用中,我们需要根据具体的滤波器类型和设计要求选择合适的阶数、截止频率和系数。同时,由于双线性变换会引入数字滤波器的频率响应失真和幅度响应非线性等问题,因此需要进行进一步的优化和校准。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值