File: rowcomp.sci

package info (click to toggle)
scilab 2.4-1
  • links: PTS
  • area: non-free
  • in suites: potato, slink
  • size: 55,196 kB
  • ctags: 38,019
  • sloc: ansic: 231,970; fortran: 148,976; tcl: 7,099; makefile: 4,585; sh: 2,978; csh: 154; cpp: 101; asm: 39; sed: 5
file content (22 lines) | stat: -rw-r--r-- 694 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
function [w,rk]=rowcomp(A,flag,tol)
//Row compression of A <--> comput. of im(A)
//flag and tol are optional parameters
//flag='qr' or 'svd' (default 'svd')
//tol tolerance parameter (of order %eps as default value)
//the rk first (top) rows of w span the row range of a
//the rk first columns of w' span the image of a
//F.D. (1987)
//!
// Copyright INRIA
[ma,na]=size(A)
[lhs,rhs]=argn(0)
if A==[] then w=[];rk=0;return;end
if norm(A,1) < sqrt(%eps)/10 then rk=0,w=eye(ma,ma),return;end
if rhs ==2 then tol=sqrt(%eps)*norm(A,1),end
if rhs==1 then flag='svd',tol=sqrt(%eps)*norm(A,1);end
select flag
case 'qr' then [q,r,rk,e]=qr(A,tol);w=q';
case 'svd' then [u,s,v,rk]=svd(A,tol);w=u' ;
end