File: mtlb_cond.sci

package info (click to toggle)
scilab 5.2.2-9
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 334,832 kB
  • ctags: 52,586
  • sloc: xml: 526,945; ansic: 223,590; fortran: 163,080; java: 56,934; cpp: 33,840; tcl: 27,936; sh: 20,397; makefile: 9,908; ml: 9,451; perl: 1,323; cs: 614; lisp: 30
file content (38 lines) | stat: -rw-r--r-- 1,217 bytes parent folder | download | duplicates (2)
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
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) 2004-2006 - INRIA - Farid BELAHCENE 
// 
// 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-en.txt

function c=mtlb_cond(A,flag)
// Emulation function for cond() Matlab function

if A == [] then c = 0, return, end
if size(A,1) <> size(A,2) &  flag <> 2 then
  error(msprintf(gettext("%s: Wrong type for input argument #%d: Square matrix expected.\n"),"mtlb_cond", 1));
end

if flag == 1
  c = norm(A,1)*norm(inv(A),1);
elseif flag == 2
  if size(A,1) == size(A,2) then  
    c = cond(A);
  else //case rectangular matrix
    s = svd(A)
    if s($) == 0 then
      c = %inf;
    else
      c = s(1)/s($);
    end
  end
elseif flag == "fro"
  c = norm(A,'fro')*norm(inv(A),'fro');
elseif flag == "inf"
  c = norm(A,'inf')*norm(inv(A),'inf');
else
  error(msprintf(gettext("%s: Wrong value for input argument #%d: %s, %s,''%s'' or ''%s'' expected.\n"),"mtlb_cond",2,"1","2","fro","inf"));  
end
endfunction