MATLAB: Issue with older code in which arrays are misrepresented as sparse

fullMATLABsparse

Starting with Matlab 2010 and continuing through the current version (2013), some older code than ran cleanly on all prior versions fails to run because some 2 dimensional arrays are returned from subroutines in sparse representation, even though the code does not ask for that. I have several questions: 1. Has anybody else seen this before? 2. Does anybody know what causes it? 3. Is there a fix? I've started to go through my code and specify that all of these matrices are full, but that is cumbersome and seems like a brute force approach.
Thanks for any feedback!

Best Answer

OKAY, figured it out: The program has multiple calls to lsqnonlin which is in the optimization toolbox. One of the computed values that is returned by lsqnonlin is the jacobian matrix. The jacobian is now returned in sparse format (it didn't used to be in earlier versions of the toolbox). All subsequent computations using the jacobian get coerced to be sparse, and some of these are then used as input arguments to fprintf, which doesn't accept sparse input. So, a fix for my problem is to set the jacobian to full. There is also a parameter that can be passed to lssqnonlin called JacobPattern, which sets the sparsity pattern of the jacobian matrix. Its default is full density, but as best as I can tell, it returns the variable in sparse format even if it is nonzero in all components. Thanks, Jan and Sean, for your input.