Documente Academic
Documente Profesional
Documente Cultură
10
de tipul zgomotului alb este dificilă, preferându-se semnalele de tipul
celor pseudoaleatoare binare care permit utilizarea avantajoasă a
tehnicilor numerice.
Limbajul de programare Matlab este un software orientat pe obiecte.
Un obiect este o structură cu mai multe elemente, fiecare element
reprezentând o proprietate a obiectului. Aceste proprietăţi pot fi accesate
de anumite funcţii ce le pot modifica sau utiliza într-o serie de operaţii.
Pentru a putea fi prelucrate de procedurile de identificare din toolbox-ul
System Identification al Matlab-ului, datele intrare – ieşire în domeniul
timp sau în domeniul frecvenţă trebuie mai întâi grupate în obiecte
specifice. De asemenea, modelele obţinute în urma utilizării procedurilor
de identificare sau cele create de utilizator sunt memorate sub forma unor
obiecte cu anumite proprietăţi. În această lucrare sunt prezentate funcţiile
uzuale utilizate pentru generarea datelor intrare-ieşire şi a modelelor
utilizate în identificare precum şi modul de prelucrare a acestora pentru a
putea fi apoi utilizate de procedurile de identificare.
■ Funcţia idinput
11
- type defineşte tipul semnalului de intrare ce va fi generat. Acest
argument ia una din următoarele valori:
type =’rgs’ : semnal gaussian aleator.
type =’rbs’ : semnal aleator binar.
type =’prbs’ : semnal pseudo-aleator binar.
type =’sine’ : semnal de tip sumă de sinusoide.
12
Exemplul 1.1 Să se genereze un semnal aleator binar cu amplitudinea
cuprinsă între -2 şi 2, pe o durată de 150 de secunde.
u=idinput(150,'rbs',[],[-2 2])
1.5
0.5
-0.5
-1
-1.5
-2
0 50 100 150
timp [sec]
Exemplul 1.2 Să se genereze pe o durată de 100 de secunde un semnal
de tip sumă de două sinusoide cu perioada egală cu 50 de secunde şi
valorile minimă şi maximă ale amplitudinii de 0, respectiv 5.
Soluţie:
Instrucţiunea care generează un astfel de semnal este următoarea:
13
d) vectorul [0 5] specifică amplitudinea minimă şi maximă a
semnalului;
e) vectorul [2 5 1] are următoarele semnificaţii: 2 reprezintă
numărul de sinusoide, 5 numărul de încercări pentru căutarea
fazei semnalelor iar 1 reprezintă pasul cu care se modifică
frecvenţele;
4.5
3.5
3
Amplitudine
2.5
1.5
0.5
0
0 10 20 30 40 50 60 70 80 90 100
Timp
■ Funcţia lsim
Descriere:
Funcţia lsim simulează răspunsul în timp la diverse intrări al
sistemelor liniare continue sau discrete. Dacă este apelată fără
argumentele din stânga egalului, funcţia plotează direct răspunsul pe
ecran. Astfel, sintaxa lsim(sys,u,t) va produce pe ecran răspunsul
unui model liniar sys la o intrare u. Vectorul t specifică momentele de
14
timp în care se face simularea şi constă în eşantioane de timp egal
distribuite t = 0:dt:Tfinal
Matricea u trebuie să aibă tot atâtea linii cât este lungimea vectorului
t şi tot atâtea coloane câte intrări are sistemul. Modelul al cărui răspuns îl
obţinem poate fi continuu sau discret, monovariabil sau multivariabil. În
cazul unui sistem discret perioada de eşantionare a lui u trebuie să fie
egală cu perioada de eşantionare a sistemului (în acest caz, vectorul t este
o mărime redundantă şi poate fi omis sau setat la o matrice vidă). În cazul
sistemelor continue, perioada de eşantionare dt=t(2)-t(1) este utilizată
pentru discretizarea modelului continuu. Dacă dt este prea mare, funcţia
lsim va afişa un mesaj de avertisment ce va sugera utilizarea unei
perioade de eşantionare mai potrivite, dar va utiliza perioada de
eşantionare specificată de utilizator.
Sintaxa lsim(sys,u,t,x0) utilizează un nou parametru, x0, ce
conţine starea iniţială a sistemului. Această sintaxă este valabilă doar
pentru modele reprezentate prin ecuaţii de stare.
Se mai poate utiliza şi sintaxa lsim(sys1,sys2,...,sysN,u,t)
prin care se simulează simultan răspunsul mai multor modele liniare la
aceeaşi intrare u.
Dacă funcţia lsim este apelată cu argumentele din stânga semnului
egal, adică:
[y,t] = lsim(sys,u,t)
[y,t,x] = lsim(sys,u,t,x0) %pentru modele în spaţiul
stărilor
15
Soluţie:
N=5;Ts=0.1;
t=[0:Ts:N];
L=length(t);
u=idinput(L,'rgs')
H=tf(3,[1 2])
lsim(H,u,t);
y=lsim(H,u,t);
idplot(u,y)
1.5
0.5
Amplitudine
-0.5
-1
-1.5
-2
-2.5
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Timp
■ Funcţia iddata
16
serie de timp). Dacă Y=[], date_id descrie doar intrarea sistemului.
Semnificaţia parametrilor este următoarea:
- Y este o matrice de dimensiune N x Ny cu N numărul de date şi Ny
numărul canalelor de ieşire.
- U este o matrice de dimensiune N x Nu cu N numărul de date şi Nu
numărul canalelor de intrare.
Y şi U trebuie să aibă acelaşi număr de linii. Pentru sisteme
monovariabile Y şi U sunt vectori coloană.
Pentru prelucrarea datelor în domeniul frecvenţă sintaxa este
următoarea:
date_id= iddata(Y,U,Ts,’FREQ’,Frecvente)
Ts=0.1;N=50;
u=idinput(N,'prbs');
H=tf(10, [2 5])
t=[0:Ts:(N-1)*Ts];
y=lsim(H,u,t);
date_id=iddata(y,u,Ts)
plot(date_id)
17
y1
1
-1
-2
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time
u1
1
0.5
-0.5
-1
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time
Proprietăţile unui obiect iddata (sau ale oricărui alt obiect Matlab) pot fi
vizualizate folosind funcţia get şi pot fi modificate folosind funcţia set.
Pentru exemplul nostru aceste proprietăţi sunt următoarele (se tastează în
linia de comandă instrucţiunea: >> get(date_id))
Domain: 'Time'
Name: []
OutputData: [50x1 double]
y: 'Same as OutputData'
OutputName: {'y1'}
OutputUnit: {''}
InputData: [50x1 double]
u: 'Same as InputData'
InputName: {'u1'}
InputUnit: {''}
Period: Inf
InterSample: 'zoh'
Ts: 0.1000
Tstart: []
SamplingInstants: [50x0 double]
TimeUnit: ''
ExperimentName: 'Exp1'
Notes: []
UserData: []
18
Dacă se doreşte modificarea uneia dintre aceste proprietăţi se foloseşte
funcţia set. Spre exemplu dacă dorim să facem perioada de eşantionare
egală cu 0.2, atunci se utilizează următoarea instrucţiune:
>> set(date_id,'Ts',0.2)
sau mai scurt: >> date_id.Ts=0.2
■ Funcţia idpoly
Sintaxă: m = idpoly(A,B,C,D,F,NoiseVariance,Ts)
Descriere:
Funcţia idpoly creează un obiect ce conţine parametrii ce descriu un
model general cu mai multe intrări şi o singură ieşire dat de relaţia
următoare:
19
este 1 în timp ce vectorul B conţine pe primele poziţii atâtea zerouri
cât indică nk. Spre exemplu, polinomul A are forma:
A(q ) = 1 + a1q −1 + a2 q −2 + ... + a na q − na
- NoiseVariance reprezintă varianţa zgomotului e(t)
- Ts reprezintă perioada de eşantionare. Pentru cazul în care sistemul este
continuu, Ts=0.
1 s+3
y (t ) = u1 (t ) + 2 u 2 (t ) + e(t )
s ( s + 1) s + 2s + 4
Soluţie:
B=[0 1;1 3];
F=[1 1 0;1 2 4]
m = idpoly(1,B,1,1,F,1,0)
Soluţie:
Folosind operatorul de întârziere cu un pas q-1 ecuaţia de mai sus se
poate scrie:
(1 − 1.5q −1 + 0.7q −2 ) y (t ) = ( q −1 + 0.5q −2 )u(t ) + (1 − q −1 + 0.2q −2 )e(t )
Avem deci un model de forma:
B( q) C ( q)
A( q) y (t ) = u(t − nk ) + e(t )
F ( q) D( q)
20
unde: A( q) = 1 − 1.5q −1 + 0.7q −2
B ( q ) = q −1 + 0.5q −2
C ( q) = 1 − q −1 + 0.2q −2
F ( q) = 1 , D( q) = 1
Pentru implementarea acestui model în Matlab se scriu următoarele
instrucţiuni:
A = [1 -1.5 0.7];
B = [0 1 0.5];
C = [1 -1 0.2];
D=1;
F=1;
Ts=0.1;
m = idpoly(A,B,C,D,F,Ts)
■ Funcţia idproc
Sintaxă: m=idproc(Type)
Descriere:
Funcţia idproc este utilizată pentru crearea de obiecte Matlab
corespunzătoare modelelor de procese uzuale simple, continue în timp.
Aceste modele pot avea mai multe intrări dar numai o singură ieşire.
Caracterul modelului este definit de argumentul Type. Acesta este un
acronim format din următoarele simboluri:
21
Exemplul 1.7
Type=’P1D’, corespunde unui model cu funcţia de transfer
Kp
G(s) = e −T s
d
1 + sT p1
Type=’P0I’ corespunde unui model cu funcţia de transfer
Kp
G(s) =
s
Type=’P3UZ’ corespunde unui model cu funcţia de transfer
1 + Tz
G(s) = K p
(1 + 2ξTw s + (Tw s) 2 )(1 + T p 3 s)
Pentru sisteme cu mai multe intrări, Type este un vector de celule,
fiecare celulă descriind caracterul modelului corespunzător intrării
respective.
Exemplu: Un model cu funcţia de transfer
K p (1) K p (2)
Y ( s) = e −T sU 1 ( s ) +
d
U 2 ( s ) se obţine folosind instrucţiunea
1 + sT p1 (1) s
m=idproc({’P1D’,’P0I’})
with K = NaN
Tp1= NaN
Td = NaN
K
G_2(s) = ---
s
with K = NaN
22
■ Funcţia idss
Sintaxă: m = idss(A,B,C,D)
m = idss(A,B,C,D,K,x0,Ts)
Descriere:
Funcţia idss este utilizată pentru a construi un model descris prin
ecuaţii de stare cu parametrii cunoscuţi şi/sau necunoscuţi. Forma
generală a modelului descris de această funcţie este următoarea:
⎧~x (t ) = A(θ) x(t ) + B (θ)u (t ) + Ke(t ), x(0) = x0
⎨
⎩ y (t ) = C (θ) x(t ) + D(θ)u (t ) + e(t )
unde
~ ⎧ x& (t ), pentru sisteme continue
x (t ) = ⎨
⎩ x(t + Ts ), pentru sisteme discrete
Există mai multe variante de parametrizare a matricelor de stare ale
sistemului folosind această funcţie. Această parametrizare determină ce
parametrii vor fi ajustaţi de procedurile de identificare ale Matlab-ului
care utilizează acest model. Există trei variante de parametrizare:
I. Parametrizarea liberă de tip cutie neagră este un prim mod de
parametrizare în care toţi parametrii matricilor A, B şi C pot fi modificaţi
de procedurile de identificare. Acest tip de parametrizare reprezintă
modul implicit. Această parametrizare se realizează prin setarea
proprietăţii 'SSParameterization' = 'Free'. Parametrizările lui D, K şi
x0 sunt determinate de următoarele proprietăţi:
- ’nk’: Este un vector linie de aceeaşi lungime cu numărul intrărilor.
Elementul de pe poziţia k din acest vector reprezintă întârzierea de pe
canalul cu numărul k. Dacă toate elementele lui nk sunt zero, înseamnă
că nu există nici o întârziere pe nici un canal de intrare şi prin urmare
toate elementele lui D trebuie estimate. Dacă toate elementele vectorului
nk au valoarea 1 înseamnă că pe fiecare canal de intrare apare o întârziere
egală cu 1 şi prin urmare, toate elementele matricei D vor fi fixate la 0.
- 'DisturbanceModel': Această proprietate afectează parametrizarea lui
K şi poate avea una din următoarele valori:
• ’Estimate’ – toate elementele lui K trebuie estimate;
• ’None’ – toate elementele lui K sunt zero;
• ’Fixed’ – toate elementele lui K sunt fixate la valoarea lor
nominală/iniţială;
- ’InitialState’: - afectează parametrizarea lui x0 şi poate avea una din
următoarele valori:
23
• ’Auto’ – se face o alegere automată a stării iniţiale, în funcţie de
datele prelucrate;
• ’Estimate’ – toate elementele lui x0 vor fi estimate;
• ’Zero’ – toate elementele lui x0 sunt zero;
• ’Fixed’ – toate elementele lui x0 sunt fixate la valoarea lor
nominală/iniţială;
• ’Backcast’ – vectorul x0 este ajustat la o valoare convenabilă pe
parcursul estimării însă nu este memorat ca un rezultat de
estimare.
24
Soluţie:
■ Funcţia sim
Sintaxă: y = sim(m,u)
y = sim(m,u,'noise')
[y, ysd] = sim(m,u,'InitialState',init)
25
Exemplul 1.9 Să se simuleze răspunsul sistemului discret următor:
q −1
y (t ) = u (t ) + e(t )
1 + 0.2q −1 + 0.3q −2
la o intrare de tip semnal pseudo-aleator binar. Sistemul este afectat de un
zgomot aleator e(t) cu distribuţie normală. Perioada de eşantionare este
Ts=0.1 sec.
Soluţie:
Sistemul este descris de un model de forma
B(q) C (q)
A(q) y (t ) = u (t − nk ) + e(t )
F (q) D( q)
unde: A(q)=1, B(q)=q-1, C(q)=1, D(q)=1, F(q)=1+0.2q-1+0.3q-2
Programul MATLAB este următorul:
B=[0 1];
F=[1 0.2 0.3]
m = idpoly(1,B,1,1,F,1,0.01)
e = iddata([],idinput(100,'rgs'));
u = iddata([],idinput(100,'prbs'));
y=sim(m,[u e]);
z=iddata(y,u);
plot(z)
Rezultatele rulării programului sunt prezentate în figura următoare:
Semnal de iesire
6
-2
-4
0 10 20 30 40 50 60 70 80 90 100
Timp
Semnal de intrare pseudo-aleator binar
1.5
1
0.5
0
-0.5
-1
-1.5
0 10 20 30 40 50 60 70 80 90 100
Timp
26
TEME:
27