Also update the URL to the CeCILL license. Thanks to Paul for noticing that
[scilab.git] / scilab / modules / cacsd / macros / cont_mat.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA -
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
9
10 function c=cont_mat(a,b)
11     //c=cont_mat(a,b) or c=cont_mat(sl) is the controllability matrix.
12     // of the pair a,b or of the system sl=[a,b,c,d] (syslin list)
13     //                 2       n
14     //i.e. c=[b, ab, ab,...; ab ]
15     //!
16     [lhs,rhs]=argn(0)
17     select typeof(a)
18     case "constant"  then
19         if rhs==1 then
20             error(msprintf(gettext("%s: Wrong number of input arguments: %d expected"),"cont_mat",2)),
21         end
22         [m,n]=size(a)
23         if m<>n then error(20,1),end
24         [mb,nb]=size(b);
25         if mb<>n then error(60),end
26
27     case "state-space" then
28         if rhs==2 then
29             error(msprintf(gettext("%s: Wrong number of input arguments: %d expected"),"cont_mat",1)),
30         end
31         [a,b]=a([2,3])
32         [n,n]=size(a)
33     else
34         if rhs==1 then
35             error(msprintf(gettext("%s: Wrong type for input argument #%d: Linear dynamical system expected.\n"),"cont_mat",1))
36         else
37             error(msprintf(gettext("%s: Wrong type of input argument #%d: Array of floating point numbers expected.\n"),"cont_mat",1))
38         end
39
40     end;
41     c=b;for k=1:n-1, c=[b,a*c],end
42 endfunction