【问题标题】:Eigen c++ NaNs disappear when I try to print them当我尝试打印 Eigen c++ NaN 时它们消失了
【发布时间】:2015-05-14 20:29:45
【问题描述】:

我在 C++ 中使用 Eigen 编写了一个代码,它返回一些 NaN,然后​​整个事情就搞砸了。当我尝试打印出变量(使用 ofstream)并追溯到 NaN 的来源时,突然间 NaN 没有出现并且计算成功完成。有谁知道为什么会发生这种情况?我不认为创建大量随机 .txt 文件是一个好的解决方法!

以防万一,我使用的矩阵是稀疏的(而且很大),并且已在代码的早期使用并在 NaN 表面之前使用 .setZero() 重置。

【问题讨论】:

  • 您的代码有未定义的行为。修复它。
  • 查看是否有未初始化的变量。如果您的代码有效,但在您下次重试时失败,则需要检查。
  • @user3670482 我花了这么长时间才找到它,但你绝对是正确的。当我认为是时,我的一个向量没有初始化为零。谢谢你的建议。
  • @NickB 很高兴它成功了:)

标签: c++ nan eigen ofstream


【解决方案1】:

检查未初始化的变量。

通常情况下,如果您的程序按预期运行,然后在您下次尝试为相同的工作流程再次运行它时失败,则原因是未初始化的变量。当然,还有很多其他因素会导致这种情况,但未初始化的变量是导致此类错误的常见原因。

【讨论】:

    猜你喜欢
    • 2016-04-19
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    相关资源
    最近更新 更多