iir滤波器是什么意思(iir滤波器)

  • 发布时间:2023-11-17 12:01:21 来源:
标签:
导读 你们好,最近小未来发现有诸多的小伙伴们对于iir滤波器是什么意思,iir滤波器这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看

你们好,最近小未来发现有诸多的小伙伴们对于iir滤波器是什么意思,iir滤波器这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。

1、滤波器的设计过程,滤波器设计方法一般有三种:

2、(1)简单滤波器零级点位置累试法

3、(2)利用模拟滤波器设计IIR数字滤波器

4、(3)利用最优化技术方法来设计数字滤波器

5、 常见的经典法设计滤波器主要有4种,巴特沃斯滤波器,切比雪夫I型滤波器,切比雪夫II型滤波器,椭圆滤波器。

6、巴特沃斯滤波器设计

7、巴特沃斯滤波器可以用于设计低通、高通、带通、带阻滤波器,其设计方法如下:

8、(1)得到滤波器最小滤波器阶数和截止频率,调用buttord函数,其调用格式如下:

9、[n,wn]=buttord(Wp,Ws,Rp,Rs);Wp,Ws分别表示归一化通带截至频率和归一化阻带截至频率,Rp,Rs分别表示通带和阻带的波纹系数

10、巴特沃斯各种滤波器设计对应的Wp,Ws的对应的规则不同

11、高通滤波器:Wp,Ws都是一元矢量,Wp>Ws

12、低通滤波器:Wp,Ws都是一元矢量,Wp<Ws

13、带通滤波器:Wp,Ws都是二元矢量,Wp<Ws

14、带阻滤波器:Wp,Ws都是二元矢量,Wp>Ws

15、(2)计算滤波器的系数,调用butter函数,调用格式如下:

16、[z,p,k]=butterap(n);

17、[b,a]=butter(n,Wn,’ftype’);

18、n表示滤波器阶数,Wn归一化截至频率,ftype:滤波器类型,z:零点,p:极点,k:增益,b,a表示滤波器系数

19、示例:对含有20HZ和50HZ频率叠加谐波信号的低通滤波,使其只含有20HZ频率

20、对应的m文件程序如下:

21、 Fs=250;

22、 T=1/Fs;

23、 L=500;

24、 N=0:L-1;

25、 t=T*N;

26、 f1=20;

27、 f2=50;

28、 x=sin(2*pi*f1*t)+sin(2*pi*f2*t);

29、 subplot(2,3,1)

30、 plot(t,x,'r')

31、 title('原始信号');

32、 xlabel('t/s');

33、 ylabel('幅值');

34、 Ndata=2^nextpow2(L);

35、 y=fft(x,Ndata)*2/Ndata;

36、 f=Fs*(0:Ndata-1)/Ndata;

37、 subplot(2,3,2)

38、 plot(f(1:Ndata/2),abs(y(1:Ndata/2)),'b');

39、 title('原始信号频谱图');

40、 xlabel('频率/HZ');

41、 ylabel('幅值');

42、%%巴特沃斯低通滤波器设计%%

43、 Wp=30/Fs;

44、 Ws=100/Fs;

45、 Rs=50;

46、 Rp=1;

47、 [n,Wn]=buttord(Wp,Ws,Rp,Rs);

48、 [b,a]=butter(n,Wn);

49、 [h,f]=freqz(b,a);

50、 f=Fs*(0:length(f)-1)/length(f);%%频率转化%%

51、 subplot(2,3,3)

52、 plot(f(1:length(f)/2),abs(h(1:length(f)/2)));

53、 title('巴特沃斯滤波器设计')

54、 xlabel('频率/HZ');

55、 ylabel('幅值');

56、%%对原始信号进行滤波%%

57、 x2=filter(b,a,x);

58、 subplot(2,3,4)

59、 plot(t,x2);

60、 title('滤波后信号');

61、 y2=fft(x2,Ndata)*2/Ndata;

62、 f=Fs*(0:Ndata-1)/Ndata;

63、 xlabel('t/s');

64、 ylabel('幅值');

65、 subplot(2,3,5)

66、 plot(f(1:Ndata/2),abs(y2(1:Ndata/2)))

67、 title('滤波后信号频谱图');

68、 xlabel('频率/HZ');

69、 ylabel('幅值');

70、程序运行结果如下:

71、切比雪夫I型滤波器设计

72、(1)得到滤波器最小滤波器阶数和截止频率,调用cheb1ord函数,其调用格式如下:

73、[n,wn]=cheb1ord(Wp,Ws,Rp,Rs);Wp,Ws分别表示归一化通带截至频率和归一化阻带截至频率,Rp,Rs分别表示通带和阻带的波纹系数

74、(2)计算滤波器的系数,调用cheby1函数,调用格式如下:

75、[b,a]=cheby1(n,Rp,Wn,’ftype’);

76、n表示滤波器阶数,Wn归一化截至频率,Rp表示通带波纹系数,ftype:滤波器类型,b,a表示滤波器系数

77、示例:采样频率为1000HZ,通带内(0-30HZ)波动不超过2dB,在120HZ处至少衰减50dB,设计切比雪夫I型滤波器

78、编写对应m文件如下:

79、 Fs=1000;

80、 Wp=30/Fs;

81、 Ws=120/Fs;

82、 Rp=2;

83、 Rs=50;

84、 [n,Wn]=cheb1ord(Wp,Ws,Rp,Rs);

85、 [b,a]=cheby1(n,Rp,Wn);

86、 [h,f]=freqz(b,a,512,Fs);

87、 f=Fs*(0:length(f)-1)/length(f);

88、 subplot(2,1,1)

89、 plot(f(1:length(f)/2),20*log(abs(h(1:length(f)/2))));

90、 title('切比雪夫I型低通滤波器');

91、 xlabel('频率/HZ');

92、 ylabel('幅值/dB');

93、 grid on;

94、 subplot(2,1,2)

95、 plot(f(1:length(f)/2),phase(h(1:length(f)/2))*180/pi);

96、 xlabel('频率/HZ');

97、 ylabel('相位/度');

98、 grid on;

99、程序运行结果如下图:

100、切比雪夫II型滤波器设计

101、(1)得到滤波器最小滤波器阶数和截止频率,调用cheb2ord函数,其调用格式如下:

102、[n,wn]=cheb2ord(Wp,Ws,Rp,Rs);Wp,Ws分别表示归一化通带截至频率和归一化阻带截至频率,Rp,Rs分别表示通带和阻带的波纹系数

103、(2)计算滤波器的系数,调用cheby1函数,调用格式如下:

104、[b,a]=cheby2(n,Rs,Wn,’ftype’);

105、n表示滤波器阶数,Wn归一化截至频率,Rs表示阻带波纹系数,ftype:滤波器类型,b,a表示滤波器系数

106、示例:采样频率为1000HZ,通带内(0-30HZ)波动不超过2dB,在120HZ处至少衰减50dB,设计切比雪夫II型滤波器

107、编写对应m文件如下:

108、 Fs=1000;

109、 Wp=30/Fs;

110、 Ws=120/Fs;

111、 Rp=2;

112、 Rs=50;

113、 [n,Wn]=cheb2ord(Wp,Ws,Rp,Rs);

114、 [b,a]=cheby2(n,Rs,Wn);

115、 [h,f]=freqz(b,a,512,Fs);

116、 f=Fs*(0:length(f)-1)/length(f);

117、 subplot(2,1,1)

118、 plot(f(1:length(f)/2),20*log(abs(h(1:length(f)/2))));

119、 title('切比雪夫II型低通滤波器');

120、 xlabel('频率/HZ');

121、 ylabel('幅值/dB');

122、 grid on;

123、 subplot(2,1,2)

124、 plot(f(1:length(f)/2),phase(h(1:length(f)/2))*180/pi);

125、 xlabel('频率/HZ');

126、 ylabel('相位/度');

127、 grid on;

128、 程序运行结果如下图:

129、椭圆滤波器设计

130、(1)得到滤波器最小滤波器阶数和截止频率,调用ellipord函数,其调用格式如下:

131、[n,wn]=ellipord(Wp,Ws,Rp,Rs);Wp,Ws分别表示归一化通带截至频率和归一化阻带截至频率,Rp,Rs分别表示通带和阻带的波纹系数

132、(2)计算滤波器的系数,调用cheby1函数,调用格式如下:

133、[b,a]=ellip(n,Rp,Rs,Wn,’ftype’);

134、n表示滤波器阶数,Wn归一化截至频率,ftype:滤波器类型,b,a表示滤波器系数

135、示例:采样频率为1000HZ,通带内(0-30HZ)波动不超过2dB,在120HZ处至少衰减50dB,设计椭圆滤波器

136、编写对应m文件如下:

137、 Fs=1000;

138、 Wp=30/Fs;

139、 Ws=120/Fs;

140、 Rp=2;

141、 Rs=50;

142、 [n,Wn]=ellipord(Wp,Ws,Rp,Rs);

143、 [b,a]=ellip(n,Rp,Rs,Wn);

144、 [h,f]=freqz(b,a,512,Fs);

145、 f=Fs*(0:length(f)-1)/length(f);

146、 subplot(2,1,1)

147、 plot(f(1:length(f)/2),20*log(abs(h(1:length(f)/2))));

148、 title('椭圆低通滤波器');

149、 xlabel('频率/HZ');

150、 ylabel('幅值/dB');

151、 grid on;

152、 subplot(2,1,2)

153、 plot(f(1:length(f)/2),phase(h(1:length(f)/2))*180/pi);

154、 xlabel('频率/HZ');

155、 ylabel('相位/度');

156、 grid on;

157、程序运行结果如下图:

158、直接法IIR滤波器设计

159、 直接法滤波器设计是直接针对滤波器频率响应进行设计,实现直接法滤波器设计函数为yulewalk,其调用格式如下:

160、 [b,a]=yulewalk(n,f,m);

161、其中,f为归一化频率点数,m为频率点处响应,两者长度一致

162、示例:设计一个5阶低通滤波器,并将其频率响应函数与设计目标响应做对比

163、编写对应m文件如下:

164、 f=[0 0.2 0.4 0.6 0.8 1];

165、 m=[1 1 1 1 0 0];

166、 [b,a]=yulewalk(5,f,m);

167、 [h,w]=freqz(b,a,256);

168、 plot(f,m,'r',w/pi,abs(h),'b');

169、 legend('设计目标响应','滤波器响应');

170、程序运行结果如下图:

以上就是iir滤波器这篇文章的一些介绍,希望对大家有所帮助。

  • 免责声明:本文由用户上传,如有侵权请联系删除!