## Pseudo inverse with CLAPACK/LAPACK

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

### Pseudo inverse with CLAPACK/LAPACK

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 MxNreal * 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 6 guests