File: rtitr.cat

package info (click to toggle)
scilab 2.6-4
  • links: PTS
  • area: non-free
  • in suites: woody
  • size: 54,632 kB
  • ctags: 40,267
  • sloc: ansic: 267,851; fortran: 166,549; sh: 10,005; makefile: 4,119; tcl: 1,070; cpp: 233; csh: 143; asm: 135; perl: 130; java: 39
file content (105 lines) | stat: -rw-r--r-- 3,330 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
rtitr            Scilab Group            Scilab Function              rtitr
NAME
   rtitr - discrete time response (transfer matrix)
  
CALLING SEQUENCE
 [y]=rtitr(Num,Den,u [,up,yp])
PARAMETERS
 Num,Den    : polynomial  matrices (resp. dimensions : nxm and nxn)
            
 u          : real matrix (dimension mx(t+1)
            
 up,yp      : real matrices (up dimension mx (maxi(degree(Den))) (default
            values=0) , yp dimension nx (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)
  
EXAMPLE
 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