Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - 日本語
Справка Scilab >> CACSD > Identification > arl2


SISO model realization by L2 transfer approximation


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')



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)


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


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


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


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


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


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


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


[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')


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

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

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

See also

  • ldiv — polynomial matrix long division
  • imrep2ss — state-space realization of an impulse response
  • time_id — SISO least square identification
  • armax — armax identification
  • frep2tf — transfer function realization from frequency response
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Feb 14 15:13:23 CET 2017