MATLAB Answers

How can I label a solution as NaN in a MEX code?

8 views (last 30 days)
AP
AP on 24 Jun 2014
Edited: José-Luis on 24 Jun 2014
I am using solvers of LAPACK libraries in a MATLAB MEX file for solving linear system of equations. For some of the cases, the system that I solve is singular. For example, the system is as follows for one of my cases:
A =
0.00000000 0.00000000 0.00000000
0.00000000 0.00000000 0.00000000
0.00000000 0.00000000 77.31867171
b:
-0.00000000 -0.00000000 -0.00000000
What would be the best approach to label this solution as NaN similar to MATLAB?

  0 Comments

Sign in to comment.

Accepted Answer

James Tursa
James Tursa on 24 Jun 2014
Use the API function mxGetNaN:
E.g., to put a NaN value into a double for returning to the MATLAB workspace:
double d = mxGetNaN( );

  0 Comments

Sign in to comment.

More Answers (1)

José-Luis
José-Luis on 24 Jun 2014
if (some_condition)
some_value = 0.0/0.0; %This will produce a NaN
end

  4 Comments

Show 1 older comment
José-Luis
José-Luis on 24 Jun 2014
I am afraid I don't understand the problem. To test for singularity you could use:
rank(some_matrix)
And if you find out some_matrix is singular then set some_value as NaN.
AP
AP on 24 Jun 2014
Since I am writing a c++ code in MATLAB, I am trying to find a way to label the solution of a singular matrix to NaN in the c++ code. I am using LAPACK solvers to solve a linear system of equation. At some point the solution to this system fail and I want to be able to label this as NaN in my c++ code. Hope this clarifies my question.
José-Luis
José-Luis on 24 Jun 2014
double myNaN = 0.0/0.0;
will produce a NaN in C++. Alternatively, you could set it to some other value
double flag = numeric_limits<double>::max();
that you then change into NaN in Matlab.

Sign in to comment.

Sign in to answer this question.

Tags


Translated by