FractionOrderSystem/FOTF Toolbox/iir_pade.m

23 lines
682 B
Matlab

function H=iir_pade(r,a,n,T)
% iir_pade - design IIR filter with Pade approximants
%
% H=iir_pade(r,a,n,T)
%
% r - the fractional order
% a - weighting factor
% n - the filter order
% T - sample time
% Copyright (c) Dingyu Xue, Northeastern University, China
% Last modified 18 May, 2022
arguments, r(1,1) double, a(1,1){mustBeInRange(a,0,1)}=0
n(1,1){mustBePositiveInteger}=3
T(1,1){mustBePositive}=0.01
end
syms x, b=(3+a-2*sqrt(3*a))/(3-a);
k0=6*b/T/(3-a); f=((1-x^2)/(1+b*x)^2)^r;
c=taylor(f,x,'Order',2*n); c=sym2poly(c);
c=c(end:-1:1); [N,D]=padefcn(c,n-1,n);
H=k0^r*tf(N(end:-1:1),D(end:-1:1),'Variable','z^-1','Ts',T);
end