Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
Drexel University or The Math Forum.



Re: How do I use a sparse matrix that was returned by a mex file?
Posted:
Mar 9, 2013 6:40 PM


"Alejandro " <aortizb@ing.uchile.cl> wrote in message <khg44l$jq8$1@newscl01ah.mathworks.com>... > "James Tursa" wrote in message <khfts1$3qb$1@newscl01ah.mathworks.com>... > > "Alejandro " <aortizb@ing.uchile.cl> wrote in message <khfcj2$ij1$1@newscl01ah.mathworks.com>... > > > Hi all, > > > > > > Say I created a sparse matrix (say K) in a mex file and returned to matlab environment. I read that sparse matrix has no information of the sparsity and cannot be used in any other matlab function that uses a sparse matrix. > > > > Wrong. If the sparse matrix was created correctly in the mex routine, you can use it just like any other sparse matrix that was created at the mfile level. You can use the FEX function spok to see if it was built properly: > > > > http://www.mathworks.com/matlabcentral/fileexchange/20186spokchecksifamatlabsparsematrixisok > > > > > > James Tursa > > Thanks James. I read somewhere in the manual what I mentioned above, so that cause me a doubt. Also, I haven't written the function yet. Maybe I misunderstood the manual, so I wanted to be sure I would be able to use the sparse matrix after it was created inside the mex function. > > What is not clear to me is the following. If only the sparse matrix that is created inside the mex function is returned to the matlab environment, how does matlab know the internal structure of that sparse matrix? do I have to return something else like ir and jc?
Inside the mex function you are required to fill in the pr, pi (if complex), ir, and jc arrays manually. If you do it correctly, the result will be a sparse matrix with the exact internal structure as if it was created at the mfile level.
James Tursa



