% Low pass IIR Digital differentiator % weighted Inverse Simpson and trapezoidal scheme % by Dr Yangquan Chen, 21-09-97 % Email=; URL=http://www.crosswinds.net/~yqchen/ % calling format [b,a]=lpiirdd(alpha) % alpha \in [0,1]; 0: inverse trapezoidal % 1: inverse Simpson % 0.8529 (0.8496) Tick % function [b,a]=lpiirdd(alpha) % alpha \in [0,1] warning off; figure r1=(3+alpha+2*sqrt(3*alpha))/(3-alpha) r2=(3+alpha-2*sqrt(3*alpha))/(3-alpha) r20=1/r2; % assume r2>1 first if (abs(r1)>abs(r2)); r20=1/r1; end % note: r1=1/r2 gain=r20*6/(3-alpha); b(1)=gain;b(2)=0;b(3)=-gain; a(1)=1;a(2)=2*r20;a(3)=r20*r20; sys_d=tf(b,a,1) w=(0:1000)*pi/1000; [mag,phase,w1]=bode(sys_d,w); subplot(2,2,1);hold on;plot(w1,abs(mag(1,:))) xlabel('freq. (0-pi)');ylabel(' mag. (dB)');ax=axis; axis equal;ax=axis; ax(3)=0;ax(4)=pi; axis(ax) subplot(2,2,2);hold on;plot(w1,phase(1,:)) xlabel('freq. (0-pi)');ylabel('phase (deg.)') subplot(2,2,3);hold on;semilogx(log10(w1),20*log10(abs(mag(1,:)))) xlabel('freq. log. (0-pi)');ylabel(' mag. (dB)') subplot(2,2,4);hold on;semilogx(log10(w1),phase(1,:)) xlabel('freq. log. (0-pi)');ylabel('phase (deg.)') warning on; return