On Tue, Mar 8, 2011 at 11:08 AM, Peter Vanroose <email@example.com>
> Is there an adjoint function for vnl_sparse_matrix ?No, not (yet); could indeed be useful and nice to have, and not too difficult too implement.
But beware that the adjoint of a sparse matrix will typically be non-sparse. (And will take ages to compute if matrix dimensions are large.)
So the "adjoint" function, even with argument "sparse matrix", should probably best return a "normal" vnl_matrix<T>.
Which, in case of large matrix dimensions, could be "too large", of course.
The easiest way to implement this, would be to just write out a conversion function from vnl_sparse_matrix<T> to vnl_matrix<T> (possibly as an operator in the vnl_sparse_matrix class) and then just call the already existing vnl_adjugate function.
Only in the "too large" cases, also this conversion would be too slow and require a too large output object. If not, the conversion part of this story would be just a minor fraction of the total work. (At least, in the current implementation of vnl_adjugate).
Eigen has an .adjoint() function on its SparseMatrix class (in SparseMatrixBase) -
It may be worth looking at what they do.