1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) - ENPC
// Copyright (C) - DIGITEO - 2010 - Allan CORNET
//
// This file is released under the 3-clause BSD license. See COPYING-BSD.
// An example of arma simulation and identification
// form ( K.J. Astrom)
// The armax process with the following characteristics
// a=[1,-2.851,2.717,-0.865]
// b=[0,1,1,1]
// d=[1,0.7,0.2]
// is simulated with an input u of a pseudo random binary type
//
// We use the simulated trajectory zd
// as an input to the armax identification macro
// The noise in the armax is colored and armax
// will give a biaised estimator
function demo_arm1()
l = lines();
lines(0);
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);
disp(_("Simulation of an ARMAX process:"));
disp(ar);
// The input
n = 300;
u = -prbs_a(n, 1, int([2.5,5,10,17.5,20,22,27,35]*100/12));
// simulation
zd = narsimul(ar, u);
// visualization
my_handle = scf(100001);
clf(my_handle,"reset");
plot2d(1:n,[zd',1000*u'],style=[1,3]);curves = gce();
legend(["Simulated output";"Input [scaled]"])
curves.children(1:2).polyline_style = 2 ;
demo_viewCode("arma1.dem.sce");
disp(_("Identification ARX (least square):"));
[arc,la,lb,sig,resid] = armax(3,3,zd,u,1,1);
disp(arc);
// using now armax1 : colored noise identification
// you can test the same example with
// n=1000; u=rand(1,n,'g') zd=narsimul(ar,u);
[arc1, resid] = armax1(3,3,2,zd(1:n),u,1);
disp(arc1);
lines(l(2), l(1));
endfunction
demo_arm1()
clear demo_arm1;
|