簡體   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