如何从犰狳基质中取代NaN?

时间:2016-06-15 13:13:55

标签: c++ matlab armadillo

以下matlab代码的armadillo / c ++等价物是什么?

A(isnan(A))=b;

2 个答案:

答案 0 :(得分:5)

docs,您可以使用has_nan()查看是否有任何值为NaN。但是,似乎没有一个函数可以返回其中哪些是NaN的索引,所以看起来你可能需要循环,并逐个检查各个元素。

但是,如果你不担心有infinites,那么你可以使用find_nonfinite( X )来获得Inf和NaN值的索引。

答案 1 :(得分:4)

使用.transform()成员函数仅更改NaN条目。这比使用find_nonfinite()更快 它将保持任何Inf值不变。

A.transform( [](double val) { return (std::isnan(val) ? double(b) : val); } );