gpt4 book ai didi

c++ - 导致 NaN 和 -inf 值的矩阵的特征和

转载 作者:搜寻专家 更新时间:2023-10-31 01:46:09 28 4
gpt4 key购买 nike

我在我的软件(C++ 中)中使用 Eigen (Tuxfamily) 时遇到一个奇怪的问题。

我通过为每个像素计算一个 Hessian 矩阵来分析 3D 体积图像。体积(大约 800x800x600)被分成子体积,对于每个子体积,我将所有获得的矩阵相加,然后将它们除以数量以获得平均值(然后我做同样的事情,将所有平均值相加并除以数量子体积以获得完整体积的平均值)。

矩阵的类型为 Matrix3d。问题是,对于大部分总和(显然也包括平均值),我得到了类似的东西:

分析的元素:28215

元素总和:28215

子体积总和:

5143.76 |楠 | -2778.05

5402.07 | 16011.9 | -inf

-2778.05 | -8716.86 | 7059.32

我这样总结它们:

    for(int i = 0;i<(int)OuterVector.size();i++){
AverageProduct+=OuterVector[i];
}

由于矩阵的性质,我知道它们在对角线上应该是对称的,因此为其中一些矩阵计算了正确的值。知道为什么其他人可能会失败吗? (并考虑它总是给我 nan 和 -inf 的矩阵的相同两个位置)

最佳答案

好的,结合你们在评论中给我的建议,我尝试了几个随机修复并解决了问题。

当我创建 Eigen::Matrix3d 对象时,我没有初始化这些值,所以不知何故,当我添加第一个 OuterVector[i] 时,这两个值变得疯狂((0,1) 正在发生到 nan,(1,2) 将变为 inf)。奇怪的是,它只发生在这两个特定值上,并且每次都以相同的方式发生。

这样做(在初始化时)

Matrix3d AverageProduct << 0,0,0,0,0,0,0,0,0;

足以修复它。

关于c++ - 导致 NaN 和 -inf 值的矩阵的特征和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21046622/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com