以下matlab代码的armadillo / c ++等价物是什么?
A(isnan(A))=b;
答案 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); } );