Scilab Function

svdcp - SVD for a Column Partitioned matrix x .

Calling Sequence

[u,v,criterion]=svdcp(x,H,r)

Description

For example x is a p x q matrix, H=[q1,q2,q3] is the partition vector: q=q1+q2+q3, so that x=[x1 x2 x3] is the concatenated of 3 matrices.

The first solution then calculates 4 normed vectors: the vector u of Rp associated to the 3 vectors vi's of Rqi, i=1,2,3. by maximizing sum[(u'*xi*vi)^2], with 4 norm constraints. The value (u'*xi*vi)^2 measures the relative link between Rp and Rqi given by xi.

It corresponds to a partial squared singular value notion, since sum[(u'*xi*vi)^2]=s^2, where s is the usual first singular value of x.

The second solution is obtained from the same criterion, but after replacing each xi by xi-xi*vi*vi' And so on for the successive solutions 1,2,...,r .

The biggest number of solutions may be r=inf(p,q1,q2,q3), when the xi's are supposed with full rank; then rmax=min([min(H),p]).

The result matrices u,v and criterion have r columns.

u defines a system of r orthonormal vectors.

v defines lenght(H) systems of r orthonormal vectors.

With the example, v=[v1;v2;v3] and one has :

u'*u=v(1:q1,:)'*v(1:q1,:)=v(q1+1:q1+q2,:)'*v(q1+1:q1+q2,:)= =v(q1+q2+1:q,:)'*v(q1+q2+1:q,:)=Ir, identity with size r.

Examples

x=rand(10,20);
[u,v,cri]=svdcp(x,[5,5,10],5);
u'*u,v(1:5,:)'*v(1:5,:),v(6:10,:)'*v(6:10,:),v(11:20,:)'*v(11:20,:)
[p,d,q]=svd(x);d(1,1)^2,sum(cri,1)

Authors

Lafosse & Hanafi (1997) in Revue de Statistique Appliquee vol.45,n.4.