Mallien ihmettelyä
Contents
Määritetään mallit
Miten arx-malli, joka perustuu absoluuttiseen inputin arvoon, voidaan muuntaa ns. CARIMA malliksi, joka perustuu inkrementti-inputteihin?
% Määritellään mallin parametrit a=[1 -0.8]; b=[2 1]; % Muodostetaan ARX-malli: sys_arx=idpoly(a,b); % Muodostetaan CARIMA-malli A =conv(a,[1 -1]); % Derivaatta a:sta [1 -1.8 0.8] sys_carima=idpoly(A,b);
Lasketaan askelvaste ARX- ja CARIMA-mallille
Koska CARIMA malli perustuu ohjauksen muutoksiin, on ohjausvektori derivoitava ensin
u=[0 ones(1,30)]; du=diff(u); subplot(2,1,1), step(sys_arx) subplot(2,1,2), lsim(sys_carima,du,(1:1:30));
For-loopilla CARIMA-mallin askelvaste voidaan laskea näin:
y=zeros(1,30); % initialisoidaan output-vektori du=[0 0 0 du]; % For-looppi voidaan aloittaa vasta hetkellä k=3 for k=3:28, %y(k)=1.8*y(k-1)-0.8*y(k-2)+2*du(k)+du(k-1); y(k)=-A(2:end)*[y(k-1) y(k-2)]'+b*[du(k) du(k-1)]'; end figure, subplot(2,1,1), stem(y), subplot(2,1,2), stem(du,'r')