rtitr

discrete time response (transfer matrix)

Calling Sequence

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

Arguments

: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 `(max(degree(Den)))

(default values= 0) , yp dimension n`x `(max(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=max(degree(Den)), and d2=max(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 discrete time response (state space)
  • exp element-wise exponential
  • flts time response (discrete time, sampled system)

Table Of Contents

This Page