No BSD License  

Highlights from
Low-pass IIR digital differentiator design

from Low-pass IIR digital differentiator design by YangQuan Chen
Low pass IIR Digital differentiator weighted Inverse Simpson and trapezoidal scheme.

[b,a]=lpiirdd(alpha)
% Low pass IIR Digital differentiator
% weighted Inverse Simpson and trapezoidal scheme
% by Dr Yangquan Chen, 21-09-97
% Email=<yqchen@ieee.org>; 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
 

Contact us at files@mathworks.com