Pseudo inverse with CLAPACK/LAPACK

Open discussion regarding features, bugs, issues, vendors, etc.

Pseudo inverse with CLAPACK/LAPACK

Postby carmellose » Thu Jun 22, 2006 6:19 am

Hello,

i'm desperatly trying to compute the pseudo inverse of an M x N matrix A in CLAPACK. I compared my results with the Matlab function
Code: Select all
 pinv(A)
...and they are not the same !!!

My program works for square matrices, but as soon as M is different than N the results differ :cry:

Do you know if there is a routine to explicitly compute the pseudo inverse in CLAPACK ? I used sgelss_, dgelss_, or preferably sgelsd, dgelsd_ following this example :

http://icl.cs.utk.edu/lapack-forum/viewtopic.php?p=497&

that is, solving min_x ||AX - B|| with B the identity matrix of size N...and X that would be the pseudo inverse....Unfortunably it doesn't work when M > N or M < N.

I used 1d arrays for A and B, eg :

Code: Select all
real * A = (real*)malloc(sizeof(real)*N*M); //matrix A of size MxN

real * B = (real*)malloc(sizeof(real)*N*N); //matrix B = Id of size NxN


I also tryed the true arrays version :

Code: Select all
real A[M][N];
real B[N][N];


or the double pointers one :

Code: Select all
real ** A = (real**)malloc(sizeof(real*)*M);

for (i=0;i<M;i++)
          A[i] = (real*)malloc(sizeof(real)*N);


and every time i get different results .......but not once the good results...

...I can't figure it out :( :( :(

any comments madly appreciated

thanks in advance,

cheers :wink:
carmellose
 
Posts: 1
Joined: Wed Jun 21, 2006 9:25 am

Return to User Discussion

Who is online

Users browsing this forum: No registered users and 4 guests