Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
arl2
SISO model realization by L2 transfer approximation
Syntax
h = arl2(y, den0, n) h = arl2(y, den0, n, imp) h = arl2(y, den0, n, imp, 'all') h = arl2(y, den0, n, 'all') [den, num, err] = arl2(..)
Arguments
- 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(); 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
Report an issue | ||
<< Identification | Identification | armax >> |