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')