Name

arl2 — SISO model realization by L2 transfer approximation

Calling Sequence

h=arl2(y,den0,n [,imp])
h=arl2(y,den0,n [,imp],'all')
[den,num,err]=arl2(y,den0,n [,imp])
[den,num,err]=arl2(y,den0,n [,imp],'all')

Parameters

y

real vector or polynomial in z^-1, it contains the coefficients of the Fourier's series of the rational system to approximate (the impulse response)

den0

a polynomial which gives an initial guess of the solution, it may be poly(1,'z','c')

n

integer, the degree of approximating transfer function (degree of den)

imp

integer in (0,1,2) (verbose mode)

h

transfer function num/den or transfer matrix (column vector) when flag 'all' is given.

den

polynomial or vector of polynomials, contains the denominator(s) of the solution(s)

num

polynomial or vector of polynomials, contains the numerator(s) of the solution(s)

err

real constant or vector , the l2-error achieved for each solutions

Description

[den,num,err]=arl2(y,den0,n [,imp]) finds a pair of polynomials num and den such that the transfer function num/den is stable and its impulse response approximates (with a minimal l2 norm) the vector y assumed to be completed by an infinite number of zeros.

If y(z) = y(1)(1/z)+y(2)(1/z^2)+ ...+ y(ny)(1/z^ny)

then l2-norm of num/den - y(z) is err.

n is the degree of the polynomial den.

The num/den transfer function is a L2 approximant of the Fourier's series of the rational system.

Various intermediate results are printed according to imp.

[den,num,err]=arl2(y,den0,n [,imp],'all') returns in the vectors of polynomials num and den a set of local optimums for the problem. The solutions are sorted with increasing errors err. In this case den0 is already assumed to be poly(1,'z','c')

Examples

 
v=ones(1,20);
clf();
plot2d1('enn',0,[v';zeros(80,1)],2,'051',' ',[1,-0.5,100,1.5])

[d,n,e]=arl2(v,poly(1,'z','c'),1)
plot2d1('enn',0,ldiv(n,d,100),2,'000')
[d,n,e]=arl2(v,d,3)
plot2d1('enn',0,ldiv(n,d,100),3,'000')
[d,n,e]=arl2(v,d,8)
plot2d1('enn',0,ldiv(n,d,100),5,'000')

[d,n,e]=arl2(v,poly(1,'z','c'),4,'all')
plot2d1('enn',0,ldiv(n(1),d(1),100),10,'000')
 

See Also

ldiv , imrep2ss , time_id , armax , frep2tf