armaxarmax identificationCalling Sequence[arc,la,lb,sig,resid]=armax(r,s,y,u,[b0f,prf])Argumentsyoutput process y(ny,n); ( ny: dimension of y , n : sample size)uinput process u(nu,n); ( nu: dimension of u , n : sample size)r and sauto-regression orders r >=0 et s >=-1b0foptional parameter. Its default value is 0 and it means that the coefficient b0 must be identified. if bof=1 the b0 is supposed to be zero and is not identifiedprfoptional parameter for display control. If prf =1, the default value, a display of the identified Arma is given.arca Scilab arma object (see armac)lais the list(a,a+eta,a-eta) ( la = a in dimension 1) ; where eta is the estimated standard deviation. , a=[Id,a1,a2,...,ar] where each ai is a matrix of size (ny,ny)lbis the list(b,b+etb,b-etb) (lb =b in dimension 1) ; where etb is the estimated standard deviation. b=[b0,.....,b_s] where each bi is a matrix of size (nu,nu)sigis the estimated standard deviation of the noise and resid=[ sig*e(t0),....] (Description
armax is used to identify the coefficients of a n-dimensional
ARX process
where e(t) is a n-dimensional white noise with variance I.
sig an nxn matrix and A(z) and B(z):
A(z)=1)
B(z) = b0+b1*z+...+b_s z^s ( s=-1 => B(z)=0)
]]>
for the method see Eykhoff in trends and progress in system identification, page 96.
with
z(t)=[y(t-1),..,y(t-r),u(t),...,u(t-s)]
and
coef= [-a1,..,-ar,b0,...,b_s]
we can write
y(t)= coef* z(t) + sig*e(t) and the algorithm minimises
sum_{t=1}^N ( [y(t)- coef'z(t)]^2)
where t0=max(max(r,s)+1,1))).
Examples
a = [1, -2.851, 2.717, -0.865];
b = [0, 1, 1, 1];
d = [1, 0.7, 0.2];
ar = armac(a, b, d, 1, 1, 1);
n = 300;
u = -prbs_a(n, 1, int([2.5,5,10,17.5,20,22,27,35]*100/12));
zd = narsimul(ar, u);
plot2d(1:n,[zd',1000*u'],style=[1,3]);curves = gce();
legend(["Simulated output";"Input [scaled]"]);
See Also
imrep2ss
time_id
arl2
armax
frep2tf