大家好,欢迎来到IT知识分享网。
IIR滤波器定义
滤波器结构图
直接I型滤波器
用个例子来说明,令 N = M = 3 N=M=3 N=M=3,
y ( n ) = ∑ l = 1 3 a ( l ) y ( n − l ) + ∑ k = 0 3 b ( k ) x ( n − k ) y(n)=\sum_{l=1}^{3}a(l)y(n-l) + \sum_{k=0}^{3}b(k)x(n-k) y(n)=l=1∑3a(l)y(n−l)+k=0∑3b(k)x(n−k)
直接I型结构图,
用滤波器的系统函数表示为,
y ( h ) = h ( n ) ∗ x ( n ) y(h)=h(n) * x(n) y(h)=h(n)∗x(n)
同时做 z z z变换后,系统函数为,
H ( z ) = ∑ k = 0 M b ( k ) z − k 1 − ∑ l = 1 N a ( l ) z − l = B ( z ) A ( z ) H(z)=\frac{\sum_{k=0}^{M}b(k)z^{-k}}{1 – \sum_{l=1}^{N}a(l)z^{-l}}=\frac{B(z)}{A(z)} H(z)=1−∑l=1Na(l)z−l∑k=0Mb(k)z−k=A(z)B(z)
从结构图中可以看出,在程序实现时,需要 2 ( N − 1 ) 2(N-1) 2(N−1)个缓存。
直接II型滤波器
可以看出 B ( z ) B(z) B(z)对应的就是直接I型结构图中的蓝色区域, A ( z ) A(z) A(z)对应的就是粉色区域,从系统函数出发,调换其中 B ( z ) B(z) B(z)和 A ( z ) A(z) A(z)的顺序,
H ( z ) = B ( z ) 1 A ( z ) = 1 A ( z ) B ( z ) H(z)=B(z)\frac{1}{A(z)}=\frac{1}{A(z)}B(z) H(z)=B(z)A(z)1=A(z)1B(z)
调换顺序后的结构图可以看到中间一部分共有操作可以合并,合并后的结构图为直接II型结构图。
从直接II型结构图中可以看出,在程序实现时,只要 ( N − 1 ) (N-1) (N−1)个缓存,比直接I型减少了(N-1)个缓存。
程序仿真
直接I型结构一阶IIR
load('HighPass50HzFs16k.mat') fs = 16000; data = rand(fs,1); data_out1 = zeros(size(data)); data_out2 = zeros(size(data)); b0 = SOS(1); b1 = SOS(2); b2 = SOS(3); a1 = SOS(5); a2 = SOS(6); x1=0; x2=0; y1=0; y2=0; [bb,aa] = sos2tf(SOS,G); data_out0 = filter(bb,aa,data); for i = 1:length(data) x0 = data(i); y0 = (x0 * b0 + x1 * b1 + x2 * b2) * G(1) ... - y1 * a1 - y2 * a2; data_out1(i) = y0; x2 = x1; x1 = x0; y2 = y1; y1 = y0; end
直接II型结构一阶IIR
s1 = 0; s2 = 0; for i = 1:length(data) s0 = data(i) - a1 * s1 - a2 *s2; y0 = (s0 * b0 + s1 * b1 + s2 * b2) * G(1); data_out2(i) = y0; s2 = s1; s1 = s0; end
参考
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122171.html