Scilab Function

rtitr - discrete time response (transfer matrix)

### Calling Sequence

  `[y]=rtitr(Num,Den,u [,up,yp])`

### Parameters

- `Num,Den` : polynomial matrices (resp. dimensions : `n`x`m` and `n`x`n`)
- `u` : real matrix (dimension `m`x`(t+1)`
- `up,yp` : real matrices (`up` dimension `m`x`(maxi(degree(Den)))` (default values=`0`) , `yp` dimension `n`x`(maxi(degree(Den)))`)
- `y` : real matrix

### Description

`y=rtitr(Num,Den,u [,up,yp])` returns the time response of the discrete time linear system with transfer matrix `Den^-1 Num` for the input `u`, i.e `y` and `u` are such that `Den y = Num u` at t=0,1,...

If `d1=maxi(degree(Den))`, and `d2=maxi(degree(Num))` the polynomial matrices `Den(z)` and `Num(z)` may be written respectively as:

      D(z)= D_0  + D_1  z + ... + D_d1   z^d1
      N(z)= N_0  + N_1  z + ... + N_d2   z^d2

and `Den y = Num u` is interpreted as the recursion:

      D(0)y(t)+D(1)y(t+1)+...+ D(d1)y(t+d1)= N(0) u(t) +....+ N(d2) u(t+d2)

It is assumed that `D(d1)` is non singular.

The columns of u are the inputs of the system at t=0,1,...,T:

      u=[u(0) , u(1),...,u(T)]

The outputs at `t=0,1,...,T+d1-d2` are the columns of the matrix `y`:

      y=[y(0), y(1),  .... y(T+d1-d2)]

`up` and `yp` define the initial conditions for t < 0 i.e

      up=[u(-d1), ..., u(-1)  ]
      yp=[y(-d1), ...  y(-1)  ]

Depending on the relative values of `d1` and `d2`, some of the leftmost components of `up`, `yp` are ignored. The default values of `up` and `yp` are zero: `up = 0*ones(m,d1), yp=0*ones(n,d1)`

### Examples

    z=poly(0,'z');
    Num=1+z;Den=1+z;u=[1,2,3,4,5];
    rtitr(Num,Den,u)-u
    //Other examples
    //siso
    //causal
    n1=1;d1=poly([1 1],'z','coeff');       // y(j)=-y(j-1)+u(j-1)
    r1=[0 1 0 1 0 1 0 1 0 1 0];
    r=rtitr(n1,d1,ones(1,10));norm(r1-r,1)
    //hot restart
    r=rtitr(n1,d1,ones(1,9),1,0);norm(r1(2:11)-r)
    //non causal
    n2=poly([1 1 1],'z','coeff');d2=d1;    // y(j)=-y(j-1)+u(j-1)+u(j)+u(j+1)
    r2=[2 1 2 1 2 1 2 1 2];
    r=rtitr(n2,d2,ones(1,10));norm(r-r2,1)
    //hot restart
    r=rtitr(n2,d2,ones(1,9),1,2);norm(r2(2:9)-r,1)
    //
    //MIMO example
    //causal
    d1=d1*diag([1 0.5]);n1=[1 3 1;2 4 1];r1=[5;14]*r1;
    r=rtitr(n1,d1,ones(3,10));norm(r1-r,1)
    //
    r=rtitr(n1,d1,ones(3,9),[1;1;1],[0;0]);
    norm(r1(:,2:11)-r,1)
    //polynomial n1  (same ex.)
    n1(1,1)=poly(1,'z','c');r=rtitr(n1,d1,ones(3,10));norm(r1-r,1)
    //
    r=rtitr(n1,d1,ones(3,9),[1;1;1],[0;0]);
    norm(r1(:,2:11)-r,1)
    //non causal
    d2=d1;n2=n2*n1;r2=[5;14]*r2;
    r=rtitr(n2,d2,ones(3,10));norm(r2-r)
    //
    r=rtitr(n2,d2,ones(3,9),[1;1;1],[10;28]);
    norm(r2(:,2:9)-r,1)
    //
    //  State-space or transfer
    a = [0.21 , 0.63 , 0.56 , 0.23 , 0.31
         0.76 , 0.85 , 0.66 , 0.23 , 0.93
         0 , 0.69 , 0.73 , 0.22 , 0.21
         0.33 , 0.88 , 0.2 , 0.88 , 0.31
         0.67 , 0.07 , 0.54 , 0.65 , 0.36];
    b = [0.29 , 0.5 , 0.92
         0.57 , 0.44 , 0.04
         0.48 , 0.27 , 0.48
         0.33 , 0.63 , 0.26
         0.59 , 0.41 , 0.41];
    c = [0.28 , 0.78 , 0.11 , 0.15 , 0.84
         0.13 , 0.21 , 0.69 , 0.7 , 0.41];
    d = [0.41 , 0.11 , 0.56
         0.88 , 0.2 , 0.59];
    s=syslin('d',a,b,c,d);
    h=ss2tf(s);num=h('num');den=h('den');den=den(1,1)*eye(2,2);
    u=1;u(3,10)=0;r3=flts(u,s);
    r=rtitr(num,den,u);norm(r3-r,1)

### See Also

`ltitr` `exp` `flts`