数字信号处理_巴特沃斯低通滤波器实验

文章目录

    • 实验目的
    • 试验内容
    • 要求
    • MATLAB实现
      • 原理
      • 代码实现

实验目的

  1. 熟悉双线性变换法设计IIR数字滤波器的原理与方法
  2. 掌握数字滤波器的计算机仿真方法
  3. 通过观察对实际心电图信号的滤波作用,获得数字滤波的感性知识

试验内容

  1. 用双线性变换法设计一个巴特沃斯低通IIR数字滤波器。设计指标参数为:在通带内频率低于 0.2 π 0.2\pi 0.2π时,最大衰减小于1dB;在阻带内 [ 0.3 π , π ] [0.3\pi,\pi] [0.3π,π]频率区间上,最小衰减大于15dB。
  2. 以0.02π为抽样间隔,打印出数字滤波器在频率区间 [ 0 , π 2 ] [0,\frac{\pi}{2}] [0,2π]上的幅频响应特性曲线。
  3. 用所设计的滤波器对实际心电图信号抽样序列进行仿真滤波处理,并分别打印出滤波前后的心电图信号波形图,观察总结滤波作用与效果。

要求

  • 由所打印的 ∣ H ( e j ω ) ∣ |H(e^{jω})| H(ejω)特性曲线及设计过程简述双线性变换法的特点。
  • 对比滤波前后的心电图信号波形,说明数字滤波器的滤波过程与滤波作用。

附:心电图信号抽样序列x(n)
人体心电图信号在测量过程中往往受到工业高频干扰,所以必须经过低通滤波处理后,才能作为判断心脏功能的有用信息。下面给出一实际心电图信号抽样序列样本x(n),其中存在高频干扰。在实验中,以x(n)作为输入序列,滤除其中的干扰成分。

x(n)={-4-20-4-6-4-2-4-6-6-4-4-6-6-261280-16-38-60-84-90-66-32-4-2-48121210666400000-2-4000-2-200-2-2-2-20}

MATLAB实现

原理

  • 双线性变换法

s s s域映射到正切 t a n tan tan,再从 t a n tan tan映射到 z z z
s = 2 T ⋅ 1 − z − 1 1 + z − 1 j Ω = 2 T j t a n ω 2    ( s = j Ω ) z = 1 + s T / 2 1 − s T / 2    ( s = δ + j Ω ) s=\frac{2}{T}\cdot\frac{1-z^{-1}}{1+z^{-1}}\\ j\Omega=\frac{2}{T}jtan\frac{\omega}{2}~~(s=j\Omega)\\ z=\frac{1+sT/2}{1-sT/2}~~(s=\delta+j\Omega) s=T21+z11z1jΩ=T2jtan2ω  (s=jΩ)z=1sT/21+sT/2  (s=δ+jΩ)

  • 数字滤波工作原理

x 0 ( t ) → H 1 ( s ) → x ( t ) → 抽 样 / 量 化 → x ( n ) → H ( z ) → y ( n ) → y s ( t ) → H 2 ( s ) → y ( t ) x_0(t)\rightarrow H_1(s)\rightarrow x(t)\rightarrow 抽样/量化\rightarrow \\ x(n)\rightarrow H(z)\rightarrow y(n)\rightarrow y_s(t)\rightarrow \\ H_2(s)\rightarrow y(t) x0(t)H1(s)x(t)/x(n)H(z)y(n)ys(t)H2(s)y(t)

代码实现

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];
n=length(x);
xk=fft(x);
plot(0:n-1,abs(xk));
title('频域信号');

数字信号处理_巴特沃斯低通滤波器实验_第1张图片

  • 双线性变换—Butterworth IIR
%数字滤波器指标
wp = 0.2*pi;ws = 0.3*pi;rp = 1;rs = 15;Fs = 1;
%转换成模拟域
wp1=2*Fs*tan(wp/2);
ws1=2*Fs*tan(ws/2);
[N,Wn] = buttord(wp1,ws1,rp,rs,'s');
[Z,P,K] = buttap(N);
[Bap,Aap] = zp2tf(Z,P,K);
[b,a] = lp2lp(Bap,Aap,Wn);
[bz,az] = bilinear(b,a,Fs);
[H,W] = freqz(bz,az);
disp(bz);
disp(az);
plot(W*Fs/pi,abs(H));
grid on;
xlabel('频率/Hz');
ylabel('幅度');
title('数字滤波器的频率响应');

数字信号处理_巴特沃斯低通滤波器实验_第2张图片

clear;
% 读取原始数据,这里是 n * 1 的数据
Signal = [-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];
%指标
wp = 0.2*pi;ws = 0.3*pi;rp = 1;rs = 15;Fs = 1;
%计算
wp1=2*Fs*tan(wp/2);
ws1=2*Fs*tan(ws/2);
[N,Wn] = buttord(wp1,ws1,rp,rs,'s');
[Z,P,K] = buttap(N);
[Bap,Aap] = zp2tf(Z,P,K);
[b,a] = lp2lp(Bap,Aap,Wn);
[bz,az] = bilinear(b,a,Fs);
% 滤波
Signal_Filter = filter(bz, az, Signal); 
subplot(2, 1, 1);
plot(Signal);
title('原始图像');
subplot(2,1,2);
plot(Signal_Filter);
title('巴特沃斯低通滤波后图像');

数字信号处理_巴特沃斯低通滤波器实验_第3张图片

你可能感兴趣的:(信号与系统,matlab)