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) .. _exp: exp.html .. _ltitr: ltitr.html .. _flts: flts.html