繁体   English   中英

矩阵的本征和得出NaN和-inf值

[英]Eigen sum of matrices resulting in NaN and -inf values

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

我正在通过为每个像素计算Hessian矩阵来分析3D体积图像。 将体积(大约800x800x600)划分为多个子体积,对于每个子体积,我将所有获得的矩阵求和,然后将它们除以数量,得到平均值(然后,我对所有平均值求和,并除以子体积以获取全部体积的平均值)。

矩阵的类型为Matrix3d。 问题是,对于大多数总和(显然也包括平均值),我得到类似以下内容:

分析元素:28215

元素合计:28215

子卷总和:

5143.76 | nan | -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;

足以修复它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM