数字信号处理实验(五):数字滤波器设计

- 日理万妓 2022-04-05 07:28 496阅读 0赞

目录

一、实验目的:

二、实验内容及要求:

  1. 双线性变换法设计IIR数字滤波器:

    1. 窗函数法设计FIR数字滤波器:

三、实验结果及问题回答:

  1. 双线性变换法设计IIR数字滤波器:

    1. 窗函数法设计FIR数字滤波器:

一、实验目的:

  1. 设计传输函数,使其频率响应逼近给定的频率响应指标。本实验掌握双线性变换法设计IIR数字滤波器的原理及具体设计方法;掌握窗函数法设计FIR数字滤波器的原理及具体设计方法。

二、实验内容及要求:

1. 双线性变换法设计IIR数字滤波器:

用双线性变换法及Mat lab编程设计一个IIR数字带通滤波器,其中通带波纹为1dB,阻带最小衰减为40dB,通带截止频率分别为500Hz和700Hz,阻带截止频率分别为400Hz和800Hz,抽样频率为2000Hz。画出该滤波器的幅频特性图。

2. 窗函数法设计FIR数字滤波器:

用窗函数法(汉明窗)及Mat lab编程设计一个FIR数字带通滤波器,其中通带波纹为1dB,阻带最小衰减为40dB,通带截止频率分别为500Hz和700Hz,阻带截止频率分别为400Hz和800Hz,抽样频率为2000Hz。画出该滤波器的幅频特性图。

三、实验结果及问题回答:

1. 双线性变换法设计IIR数字滤波器:

(1)程序:

  1. %%
  2. clear all
  3. Rp=1;%设定通带波纹
  4. Rs=40;%设定阻带最小衰减
  5. wp1=500;%设定通带截止频率
  6. wp2=700;
  7. ws1=400;%设定阻带截止频率
  8. ws2=800;
  9. Fp=2000;%设定抽样频率
  10. %%
  11. %模拟频率转换成数字角频率
  12. Wp1=2*pi*wp1/Fp;
  13. Wp2=2*pi*wp2/Fp;
  14. Ws1=2*pi*ws1/Fp;
  15. Ws2=2*pi*ws1/Fp;
  16. %%
  17. %非线性化
  18. WP1=tan(Wp1/2);
  19. WP2=tan(Wp2/2);
  20. WS1=tan(Ws1/2);
  21. WS2=tan(Ws2/2);
  22. WP0=sqrt(WP1*WP2);%等效中频
  23. Bw=WP2-WP1;%带宽
  24. %%
  25. %标准化
  26. Normal_P0=WP0/Bw;
  27. Normal_P1=WP1/Bw;
  28. Normal_P2=WP2/Bw;
  29. Normal_S1=WS1/Bw;
  30. Normal_S2=WS2/Bw;
  31. %%
  32. %转换为等效低通
  33. EqualLowPass_P=(Normal_P2^2-Normal_P0^2)/Normal_P2;
  34. EqualLowPass_S1=-(Normal_S1^2-Normal_P0^2)/Normal_S1;
  35. EqualLowPass_S2=-(Normal_S2^2-Normal_P0^2)/Normal_S2;
  36. EqualLowPass_S=min(EqualLowPass_S1,EqualLowPass_S2);
  37. %%
  38. %估计滤波器阶数
  39. [N,Wn]=buttord(EqualLowPass_P,EqualLowPass_S,Rp,Rs,'s');
  40. %%
  41. %设计滤波器
  42. [num1,den1]=butter(N,Wn,'s');
  43. [num2,den2]=lp2bp(num1,den1,WP0,Bw);
  44. [num,den]=bilinear(num2,den2,0.5);
  45. %%
  46. %计算增益响应
  47. w=0:pi/255:pi;
  48. h=freqz(num,den,w);
  49. g=20*log10(abs(h));
  50. %%
  51. %画增益响应图
  52. figure;
  53. plot(w/pi,g);
  54. grid on;
  55. axis([0 1 -60 5]);
  56. xlabel('\omega/\pi');
  57. ylabel('Gain in db');
  58. title('带通滤波器的增益响应图')

(2)幅频特性:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1hpYW9tb19oYWE_size_16_color_FFFFFF_t_70

2. 窗函数法设计FIR数字滤波器:

(1)程序:

  1. %%
  2. clear all;
  3. Rp=1;%设定通带波纹
  4. Rs=40;%设定阻带最小衰减
  5. wp1=500;%设定通带截止频率
  6. wp2=700;
  7. ws1=400;%设定阻带截止频率
  8. ws2=800;
  9. Ft=2000;%设定抽样频率
  10. Fp=[wp1,wp2];
  11. Fs=[ws1,ws2];
  12. Deta_p=1-10^(-Rp/20);
  13. Deta_s=10^(-Rs/20);
  14. %%
  15. %估计滤波器阶数
  16. N=kaiord(Fp,Fs,Deta_p,Deta_s,Ft);
  17. %%
  18. %设计滤波器
  19. Wn=2/Ft*[wp1 wp2];%标准化频率
  20. b=fir1(N,Wn,'bandpass');
  21. %%
  22. %计算增益响应
  23. [g,w]=Gain(b,1);
  24. %%
  25. %绘制增益响应
  26. plot(w/pi,g);
  27. grid on;
  28. axis([0 1 -60 5]);
  29. xlabel('\omega/\pi');
  30. ylabel('gain in dB');
  31. title('FIR带通滤波器的增益响应')
  32. gain函数:
  33. function [g,w] = gain(num,den)
  34. w = 0:pi/255:pi;
  35. h = freqz(num,den,w);
  36. g = 20*log10(abs(h));
  37. kaiord函数:
  38. function N = kaiord(Fp, Fs, Rp, Rs, FT)
  39. if nargin == 4,
  40. FT = 2;
  41. end
  42. if length(Fp) > 1,
  43. TBW = min(abs(Fp(1) - Fs(1)), abs(Fp(2) - Fs(2)));
  44. else
  45. TBW = abs(Fp - Fs);
  46. end
  47. num = -20*log10(sqrt(Rp*Rs))-13;
  48. den = 14.6*TBW/FT;
  49. N = ceil(num/den);

(2)幅频特性:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1hpYW9tb19oYWE_size_16_color_FFFFFF_t_70 1

发表评论

表情:
评论列表 (有 0 条评论,496人围观)

还没有评论,来说两句吧...

相关阅读