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
|
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) 1995-2010 - INRIA - Serge Steer
//
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution. The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
function d=%r_diag(a,k)
// %r_diag - implement diag function for rational matrix ,..
if argn(2)<2 then
k=0,
else
if type(k)<>1 then error(53,2);end
if size(k,"*")<>1 then error(89,2);end
if ~isreal(k) then error(52,2);end
end
[m,n]=size(a.num)
if m<>1&n<>1 then
d=rlist(diag(a.num,k),diag(a.den,k),a.dt)
else
mn=max(m,n)
den=ones(mn,mn)
den=den-diag(diag(den,k))+diag(a.den,k)
d=rlist(diag(a.num,k),den,a.dt)
end
endfunction
|