Professional Documents
Culture Documents
01 IS Lab pp#L.1-L.22
01 IS Lab pp#L.1-L.22
Tema 11
O
O bibliotec ă de
bibliotecă de rutine
rutine specializate
specializate pe
pe un
un anumit
anumit domeniu
domeniu
de
de cercetare
cercetare..
2 p
În
În particular,
particular, IDENT
IDENT sese refer
referăă la
la domeniul
domeniul IS
IS şi
şi conţine
conţine rutine
rutine
implementate
implementate în în tehnologia
tehnologia Program ării Orientate
Programării Orientate pe
pe Obiecte
Obiecte..
Există şşii oo interfa
Există ţă grafic
interfaţă ă prietenoas
grafică prietenoasăă cu
cu utilizatorul
utilizatorul ((GUI),
GUI),
Mai
Mai mult
mult pentru
pentru efectuarea
efectuarea de de experimente
experimente de
de identificare
identificare comparative.
comparative.
Obiecte
Obiecte IDENT
IDENT
principale
principale
IDDATA IDMODEL IDSS
Cîteva
Cîteva funcţii
funcţii IDENT
IDENT
frecvent
frecvent utilizate
utilizate
armax/arx ident n4sid
bj/oe idarx pem
compare idpoly predict
• Lansată în execuţie prin comanda:
iddata iv4 sim >>
>> ident
ident L.1
Tema
Tema 11
n Trusa de instrumente IDENT din MATLAB
IDDATA
IDDATA
D Structură de date intrare-ieşire generate folosind metoda constructor iddata asociată
obiectului IDDATA (date de identificare). Cele 2 matrici de date u (de intrare) şi y (de
ieşire) pot avea dimensiuni identice: N linii şi nr coloane. Fiecare din cele nr perechi de
coloane de dateI I/O este văzută ca un experiment econometric (sau o realizare). Dacă
y are numai o coloană, atunci nr=nu şi datele provin de la un model MISO. Datele se
regăsesc în cîmpurile D.u şi D.y. Structura se compune din următoarele cîmpuri:
Domain: ''Time'/'Frequency''* Există blocuri de date în domeniul
* Există blocuri de date în domeniul
Name: 'String'
OutputData: [1x37 char]
timpului
timpului sau
sau îîn
n domeniul
domeniul frecven ţei.
frecvenţei.
y: 'Same as OutputData' Í date de ieşire
OutputName: 'Ny-by-1 cell array of strings'
OutputUnit: 'Ny-by-1 cell array of strings'
InputData: [1x36 char]
u: 'Same as InputData' Í date de intrare
InputName: 'Nu-by-1 cell array of strings'
InputUnit: 'Nu-by-1 cell array of strings'
Period: [1x51 char] Í perioadã de eşantionare
InterSample: [1x36 char]
Ts: [1x54 char]
Tstart: 'Scalar (Starting time)'
SamplingInstants: [1x51 char]
Î Pentru mai multe detalii:
TimeUnit: 'String'
ExperimentName: [1x43 char] >>
>> idprops
idprops iddataiddata
Notes: 'Cell array of strings'
UserData: 'Arbitrary'
L.2
Tema
Tema 11
n Trusa de instrumente IDENT din MATLAB
Cum se poate crea un bloc de date?
Este
Este necesar
necesar ca,
ca, mai
mai întîi
întîi,, ssă
ă se
se cunoască modul
cunoască modul de
de reprezentare
reprezentare aa datelor
datelor
primare
primare în
în mediul
mediul de
de programare
programare MATLAB.
MATLAB.
Date
Date pe
pe canale
canale de
de m ăsură (fiecare coloană este asociată cîte unui canal)
măsură
** Momente
Momente dede
• Datele primare sunt reprezentate în diferite formate, dintre care MATLAB
poate recunoaşte următoarele, uzuale:
şantionare.
eeşantionare. Î ASCII (.M) (similare programelor principale)
(eventual)
Î ASCII (.TXT) (cu datele precizate pe coloane)
yy Î Tabel (.XLS) (accesibile cu MS Office - Excell)
Î Criptat (.MAT) (create şi salvate pe disc prin
comanda MATLAB save)
• Pentru încărcarea lor în spaţiul de lucru al mediului de programare MATLAB, se pot utiliza
comenzile următoare:
>>
>> nume_fisier_date
nume_fisier_date Î ASCII (.M)
>>
>> load
load nume_fisier_date.extensie
nume_fisier_date.extensie Î ASCII (.TXT), Criptat (.MAT)
>>
>> xlsread
xlsread nume_fisier_date.xls
nume_fisier_date.xls Î Tabel (.XLS)
** Observa
Observaţiţi maniera
maniera de
de atribuire
atribuire aa
variabilei
variabilei care
care conţine datele
conţine datele..
** Momente
Momente dede
şantionare.
eeşantionare.
** Nu
Nu este
este obligatoriu
obligatoriu caca
prima
prima coloan
coloanăă ssă
ă includ ă
includă
momente
momente de şantionare.
de eeşantionare. L.5
Tema
Tema 11
n Trusa de instrumente IDENT din MATLAB
Şi totuşi… Cum se poate crea un bloc de date?
Odat
Odatăă încărcate
încărcate în
în spaţiul
spaţiul de
de lucru
lucru MATLAB,
MATLAB, datele
datele primare
primare pot
pot forma
forma
blocuri
blocuri de
de date
date cu
cu ajutorul
ajutorul comenzii
comenzii: :
>>
>> iddata
iddata
Exemplu
Exemplu
• A fost proiectată funcţia make_DATA, care crează şi salvează pe disc un bloc de date
corespunzător unor serii de timp măsurate simultan pe mai mult canale:
L.6
Tema
Tema 11
n Trusa de instrumente IDENT din MATLAB
Exemplu
Exemplu make_DATA
make_DATA
** Dac
Dacăă sunt
sunt mai
mai mult
mult de
de 22 coloane
coloane,,
se
se consider
considerăă ccă
ă prima
prima include
include
momente
momente de şantionare.
de eeşantionare.
L.7
Tema
Tema 11
n Trusa de instrumente IDENT din MATLAB
IDMODEL
IDMODEL
M Obiectul IDMODEL (model de identificare I/O) conţine cîmpurile:
a : 'A -poly nomi al ( row v ecto r)'
b: ' B-po lyno mial (row vec tor)'
polinoamele modelului Î c: ' C-po lyno mial (row vec tor)'
d: ' D-po lyno mial (row vec tor)'
RIO (A,B,…,F) f: ' F-po lyno mial (row vec tor)'
( ) ( )
−1 −1 da: ' stan dard devi atio n of a (s cala r)'
B q C q
( )
db: ' stan dard devi atio n of b (s cala r)'
A q −1 y[n] = u[ n ] + e[ n ]
( ) ( )
dc: ' stan dard devi atio n of c (s cala r)'
−1 −1
∗
F q D q dd: ' stan dard devi atio n of d (s cala r)'
∀n ∈N df: ' stan dard devi atio n of f (s cala r)'
na: ' orde r of A-po lyno mial (sca lar) '
indicii structurali Î nb: ' orde r of B-po lyno mial (sca lar) '
nc: ' orde r of C-po lyno mial (sca lar) '
(na,nb,…,nf) nd: ' orde r of D-po lyno mial (sca lar) '
nf: ' orde r of F-po lyno mial (sca lar) '
timpul mort Î nk: 'delay of B-polynomial (scalar)'
In itia lSta te: [ 1x45 cha r]
Na me: ' stri ng'
perioada de eşantionare Î Ts: ' samp le t ime i n se cond s (sc alar )'
Inp utNa me: ' Nu-b y-1 cell arra y of stri ngs'
Inp utUn it: ' Nu-b y-1 cell arra y of stri ngs'
Outp utNa me: ' Ny-b y-1 cell arra y of stri ngs'
Outp utUn it: ' Ny-b y-1 cell arra y of stri ngs'
Ti meUn it: ' stri ng'
Param eter Vect or: ' Np-b y-1 vecto r'
PName: 'Np-by-1 cell array of strings'
C ovari ance Matr ix: ' Np-b y-Np matr ix'
Noi seVa rian ce: ' Ny-b y-Ny matr ix' Î Pentru mai multe detalii:
InputDelay: 'Nu-by-1 vector'
Alg orit hm: [ 1x38 cha r] >>
>> idprops
idprops idmodel
idmodel
Esti mati onIn fo: [ 1x39 cha r]
Notes: 'Array or cell array of strings'
User Data : 'A rbitr ary'
Evident, polinoamele A şi B se regăsesc în cîmpurile: M.a, respectiv M.b. În M.b
sunt salvaţi atît coeficienţii nenuli cît şi cei nuli (datoraţi întîrzierii intrinseci) ai
polinomului B. Ordinele polinoamelor sunt memorate în M.na, respectiv M.nb, iar
întîrzierea intrinsecă – în M.nk.
L.8
Tema
Tema 11
n Trusa de instrumente IDENT din MATLAB
IDSS
IDSS Î Pentru mai multe detalii: >>
>> idprops
idprops idss
idss
S Obiectul IDSS (model de identificare pe stare) conţine cîmpurile:
A: 'A-matrix (Nx-by-Nx matrix)'
matricile modelului Î B: 'B-matrix (Nx-by-Nu matrix)'
C: 'C-matrix (Ny-by-Nx matrix)'
(A,B,…,K) D: 'D-matrix (Nu-by-Ny matrix)'
K: 'K-matrix (Nx-by-Ny matrix)'
starea iniţială Î X0: 'Initial states (Nx-by-1 matrix)'
dA: 'Std deviation of A-matrix'
⎧x[n + 1] ≡ A(θ)x[n] + B(θ)u[n] + K (θ)e[n] dB: 'Std deviation of B-matrix'
⎨ dC: 'Std deviation of C-matrix'
⎩y[n] ≡ C(θ)x[ n] + D(θ)u[n] + e[n] dD: 'Std deviation of D-matrix'
dK: 'Std deviation of K-matrix'
∀ n ∈ N∗ dX0: 'Std deviation of X0-matrix'
SSParameterization: '['Free'|'Canonical'|'Structured']'
As: 'Structure matrix for A'
RSS Bs: 'Structure matrix for B'
Cs: 'Structure matrix for C'
Ds: 'Structure matrix for D'
Ks: 'Structure matrix for K'
X0s: 'Structure matrix for X0'
StateName: 'Nx-by-1 cell array of strings'
InitialState: '['Auto'|'Backcast'|'Estimate'|
'Zero'|'Fixed']'
nk: 'Model delays in response from u to y
(nu-by-1 vector)'
DisturbanceModel: '['Estimate'|'None'|'Fixed']'
CanonicalIndices: 'Row vector or 'Auto''
Name: 'string'
perioada de eşantionare Î Ts: 'Scalar (sample time in seconds)'
InputName: 'Nu-by-1 cell array of strings'
InputUnit: 'Nu-by-1 cell array of strings'
OutputName: 'Ny-by-1 cell array of strings'
OutputUnit: 'Ny-by-1 cell array of strings'
TimeUnit: 'string'
ParameterVector: 'Np-by-1 vector'
PName: 'Np-by-1 cell array of strings'
CovarianceMatrix: 'Np-by-Np matrix'
NoiseVariance: 'Ny-by-Ny matrix'
InputDelay: 'Nu-by-1 vector'
Algorithm: 'Structure: algorithm details'
EstimationInfo: 'Structure: estimation results'
Notes: 'Array or cell array of strings'
UserData: 'Arbitrary'
Ev ident, matricile A, B, C, D, K se regăsesc în cîmpurile: S.A, S.B, S.C, S.D,
L.9
respectiv M.K. În S.X0 se află vectorul stărilor iniţiale ale sistemului.
Tema
Tema 11
n Trusa de instrumente IDENT din MATLAB
Ce legătură există între obiectele IDMODEL şi IDSS?
Orice
Orice model
model RSISO
RSISO poate
poate fifi convertit
convertit într -un model
într-un model cu
cu reprezentare
reprezentare
pe
pe stare
stare ((MRS)
MRS) şi
şi reciproc
reciproc,, prin
prin intermediul
intermediul unor
unor algoritmi
algoritmi specifici
specifici..
MIO
B ( q −1 ) C ( q −1 )
A (q ) y[n] = F
−1
obiect IDSS obiect IDMODEL
u[n] + e[n]
(q )
−1
D (q −1
) ∀ n ∈ N∗ >>
>> MRS
MRS == idss(MIO) ;;
idss(MIO)
>>
>> MIO
MIO == idpoly(MRS) ;;
idpoly(MRS) MRS
** Nu
Nu poate
poate fifi controlat
controlat num ărul de
numărul de
Modelele
Modelele pe
pe stare
stare înîn timp
timp discret
discret pot
pot fifi vvăzute
ăzute ststări
ări (care,
(care, de
de regulă, este
regulă, este ridicat ).
ridicat).
şi
şi ca
ca modele
modele înîn timp
timp continuu
continuu,, prin
prin precizarea
precizarea
perioadei
perioadei de
de eşantionare
eşantionare (implicit
(implicit unitar
unitară).ă).
>>
>> MRS.Ts
MRS.Ts == Ts
Ts ;; L.10
Tema
Tema 11
n Trusa de instrumente IDENT din MATLAB
Cum se poate crea un obiect de tip model de identificare?
Exist
Existăă două posibilit
două ăţi uzuale
posibilităţi :
uzuale:
c Direct, prin utilizarea uneia dintre comenzile:
>>
>> idpoly
idpoly
Î pentru modele I/O liniare polinomiale
>>
>> idarx
idarx ** A
A doua
doua —— numai
numai pentru
pentru modele
modele ARX
ARX..
>>
>> idss
idss
Î pentru modele liniare pe stare
>>
>> idgrey
idgrey
d Indirect, prin utilizarea uneia dintre rutinele de identificare menţionate.
** Se
Se va
va reveni
reveni asupra
asupra acestui
acestui subiect
subiect..
• Apeluri întrebuinţate frecvent:
>> M = idpoly ; Î Crează modelul grosier (A=1, B=0, C=1, D=1, F=1) …
>> M.a = A ; Î … apoi atribuie polinoamele. ⎡ A ( q −1 ) = 1 + a1 q −1 + " + ana q − na
⎢
>> M.b = B ; A = [1 a1 a2 … ana] ⎢ B ( q −1 ) = q − nk ( b1 q −1 + " + bnb q − nb )
>> M.c = C ; B = [0 … 0 b1 b2 … bnb] ⎢
⎢C ( q −1 ) = 1 + c1 q −1 + " + cnc q − nc
>> M.d = D ; ... ⎢
>> M.f = F ; nk ≥ 1 (întîrzierea intrinsecă) ⎢ D ( q −1 ) = 1 + d1 q −1 + " + d nd q − nd
F = [1 f1 f2 … fnf] ⎢
⎢ F ( q −1 ) = 1 + f1 q −1 + " + f nf q − nf
⎣
>> M = idpoly(A,B,C,D,F) ; Î Crează direct modelul dorit.
** Ultimele
Ultimele polinoame
polinoame pot
pot lipsi
lipsi.. ** Unele
Unele polinoame
polinoame pot
pot fifi vide.
vide. L.11
Tema
Tema 11
n Trusa de instrumente IDENT din MATLAB
Principalele
Principalele rutine
rutine de
de identificare
identificare (1/9)
(1/9)
>>
>> MM == armax (DATA,'na',na,'nb',nb,'nc',nc,'nk',nk);
armax(DATA,'na',na,'nb',nb,'nc',nc,'nk',nk);
** Variantă care
Variantă care permite
permite omiterea
omiterea
obiect IDMODEL obiect IDDATA unora
unora dintre
dintre indicii
indicii structurali
structurali..
Exemple
Exemple
>> M = armax(DATA,'na',3,'nb',7) ; Î Identifică modelul ARX[3,7].
>> M = armax(DATA,'na',1,'nc',6) ; Î Identifică modelul ARMA[1,6].
• Apeluri alternative rapide:
>>
>> MM == armax(iddata(y,u),indici_structurali);
armax(iddata(y,u),indici_structurali);
** Cu
Cu yy şşii uu de
de tip
tip date
date preliminare
preliminare ((vectori/matrici
vectori/matrici de
de date şezate pe
date aaşezate pe coloane ).
coloane).
>>
>> MM == armax(iddata(y,[]),indici_structurali );
armax(iddata(y,[]),indici_structurali);
** ÎÎn
n cazul
cazul seriilor
seriilor de
de timp
timp.. Metoda
Metoda de
de identificare
identificare
Minimizarea
Minimizarea Erorii
Erorii de
de Predicţie ((MMEP)
Predicţie MMEP) L.12
Tema
Tema 11
n Trusa de instrumente IDENT din MATLAB
Principalele
Principalele rutine
rutine de
de identificare
identificare (2/9)
(2/9)
armax
armax
• Modelele identificate pot fi multi-dimensionale. Dar
Dar nu
nu de
de tip
tip MIMO
MIMO
⎧ A ( q −1 ) y[ n] = B ( q −1 ) u[ n] + C ( q −1 ) e[ n]
⎪
Modelul
Modelul ARMAX -MIMO ⎨
ARMAX-MIMO
Matrici
Matrici de
de polinoame
polinoame
⎪
⎩ E {e[ n ]e T
[ m ]} = Λ δ 0 [ n − m ] ∀n∈N
(q ) ∈ R ny
A∈R ny×ny −1 Semnale Î y u ∈ R nu
e ∈ R ny aceeaşi
dimensiune
B∈R ny×nu
(q )
−1 ** Exist
Existăă tot
tot at îtea perturba
atîtea ţii ccîte
perturbaţii îte canale
canale de
de măsură.
măsură.
Ecuaţia
Ecuaţia generic
genericăă ARMAX -MIMO
ARMAX-MIMO
C∈R ny×ny
(q )
−1
ny nu ny
** Avînd coeficien
Avînd coeficienţi ţi ∑ Al , j (q
j =1
−1
) y j [n] = ∑ Bl ,i ( q
i =1
−1
) i ∑ l , j ( ) e j [ n]
u [ n ] + C
j =1
q −1
necunoscu ţi .
necunoscuţi. ∀n∈N
Necunoscută.
** Necunoscută.
y1
+
u1
col1B
x1
y2
+
u2
col 2 B x2
−1
... ...
A ...
variabile
interne
xny yny
+
unu
col nu B
Procesare
Procesare IN
IN Procesare
Procesare ZZ Procesare
Procesare OUT
OUT L.14
Tema
Tema 11
n Trusa de instrumente IDENT din MATLAB
Principalele
Principalele rutine
rutine de
de identificare
identificare (4/9)
(4/9)
armax
armax Cum ar putea fi inversată matricea de polinoame A?
În
În general,
general, este
este dificil
dificil,, dacă nu
dacă nu imposibil
imposibil..
Este
Este necesar
necesară ă oo simplificare
simplificare aa modelului
modelului,, care
care va
va permite
permite ** Modelul
Modelul vava pierde
pierde
fie
fie evitarea
evitarea invers ării, fie
inversării, fie inversarea
inversarea cu
cu uşurinţă
uşurinţă.. îînsă
nsă din
din precizie
precizie..
y1
+
u1 y1
+
u1
col1B col1B
x1
1− A j ...
y2
+
u2 yj
+
u2
col 2 B x2 col 2 B
... ...
A −1 ... ... ...
1− A j
...
unu yny
xny yny col nu B +
+ L.15
unu
col nu B 1 − A ny
Tema
Tema 11
n Trusa de instrumente IDENT din MATLAB
armax
armax Principalele
Principalele rutine
rutine de
de identificare
identificare (5/9)
(5/9)
e1
C1
... ej
... Cj
...
...
eny
Cny
Reprezentarea
Reprezentarea sistemică multi
sistemică -MISO
multi-MISO
e1 ... ej ... eny
y1
+
u1
col1B
1− A j ...
yj
+
u2
col 2 B
1− A j
...
Practic
Practic,, matricile
... ...
unu
col nu B +
1 − A ny
yny
matricile
C1 ... Cj ... C ny A
A şi
şi CC sunt
sunt
Acum
Acum,, exist ă
există
diagonale
diagonale..
doar
doar 22 trepte
trepte..
y1
+
u1
col1B
1 − A1 ...
yj
+
u2
col 2 B
1− A j
...
... ... ** Nu
Nu se
se efectueaz
efectueazăă nici
nici oo inversare
inversare..
** ÎÎn
n compensare
compensare,, gradele
gradele polinoamelor
polinoamelor A A şşii C
C
yny
+
unu pot
pot fifi diferite
diferite de
de la
la un
un canal
canal la
la altul
altul..
col nu B
1 − A ny
Procesare
Procesare IN
IN Procesare
Procesare Z+OUT
Z+OUT L.16
Tema
Tema 11
n Trusa de instrumente IDENT din MATLAB
Principalele
Principalele rutine
rutine de
de identificare
identificare (6/9)
(6/9)
armax
armax
În
În concluzie
concluzie Modelul
Modelul ARMAX -MIMO, este
ARMAX-MIMO, este înlocuit
înlocuit de
de oo colecţie
colecţie de
de modele
modele
ARMAX -MISO, identificate
ARMAX-MISO, identificate din
din blocuri
blocuri de
de date
date de
de forma:
forma:
** Se
Se apeleaz
de
apelează ă armax
armax ...
de ny
ny ori
ori..
>>
>> MM == bj(DATA,'nb',nb,'nc',nc ,'
bj(DATA,'nb',nb,'nc',nc nd',nd,'nf',nf,'nk',nk);
,'nd',nd,'nf',nf,'nk',nk);
** Variant
Variantă ă care
care permite
permite omiterea
omiterea
obiect IDMODEL obiect IDDATA unora
unora dintre
dintre indicii
indicii structurali
structurali..
• Modelul ARMAX fiind un caz particular de model Box-Jenkins, el se poate identifica accidental
şi cu ajutorul funcţiei bj.
** Func ţia bj
Funcţia bj este
este îînsă
nsă mai
mai lentă dec
lentă ît func
decît ţia armax
funcţia armax..
• Interfaţa este convivială şi poate fi descoperită pas cu pas de către utilizator. L.21
Tema
Tema 11
n Trusa de instrumente IDENT din MATLAB
) Probleme de simulare
Problema
Problema 1.1 1.1
Utilizaţi comenzile help şi helpwin pentru a obţine informaţii despre funcţiile
MATLAB prezentate. Apoi, elaboraţi mici programe, prin care să testaţi funcţionarea
acestor funcţii. Datele se pot genera pseudo-aleator cu ajutorul funcţiilor rand
şi/sau randn. O funcţie inetersantă pentru generarea de semnale de stimul este
şi idinput. (Obiectivul este acela de a vă obişnui cu maniera de apelare a
acestor funcţii şi nu neapărat de a verifica precizia rezultatelor oferite de ele.)
Problema
Problema 1.2
1.2
1. După modelul funcţiei make_DATA proiectaţi o rutină care să construiască un
obiect de tip IDDATA pentru modele MIMO complete. (Cu alte cuvinte,
adăugaţi şi intrările achiziţionate în blocul de date). Testaţi corectitudinea
rutinei.
2. Proiectaţi o rutină care să construiască un obiect de tip IDSS.
Problema
Problema 1.3
1.3
Lansaţi în execuţie interfaţa grafică de identificare IDENT şi testaţi toate facilităţile
acesteia, plecînd de la Import data > Example.
L.22