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

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?

 採用された回答

James Tursa
James Tursa 2014 年 6 月 24 日

0 投票

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

その他の回答 (1 件)

José-Luis
José-Luis 2014 年 6 月 24 日

0 投票

if (some_condition)
some_value = 0.0/0.0; %This will produce a NaN
end

4 件のコメント

AP
AP 2014 年 6 月 24 日
I understand this. I wanted to label some_value as NaN.
José-Luis
José-Luis 2014 年 6 月 24 日
編集済み: José-Luis 2014 年 6 月 24 日
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 2014 年 6 月 24 日
編集済み: AP 2014 年 6 月 24 日
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 2014 年 6 月 24 日
編集済み: José-Luis 2014 年 6 月 24 日
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.

サインインしてコメントする。

カテゴリ

タグ

質問済み:

AP
2014 年 6 月 24 日

編集済み:

2014 年 6 月 24 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by