在MATLAB / MEX中处理NaN的最佳方法

时间:2014-06-24 19:09:22

标签: matlab nan mex lapack

我在LAPACK MATLAB文件中使用MEX个库的求解器来求解线性方程组。对于某些情况,我解决的系统是单数。例如,对于我的一个案例,系统如下:

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

Ax=b上述系统的解决方案标记为NaN类似于MATLAB的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

以下是从MEX函数创建填充NaN s的数字向量的示例:

test_nan.cpp

#include "mex.h"

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
    plhs[0] = mxCreateDoubleMatrix(3, 1, mxREAL);
    double *x = mxGetPr(plhs[0]);
    double nanVal = mxGetNaN();
    for (int i=0; i<3; ++i) {
        x[i] = nanVal;
    }
}

MATLAB

>> mex -largeArrayDims test_nan.cpp
>> x = test_nan()
x =
   NaN
   NaN
   NaN