2013-10-02 45 views
1

我有一個ilnumerics對稱的像如何在數字對稱矩陣中找到最大值?

100  90,38000 87,27000 44,23000 34,62000 30,77000 
90,38000  100 90,91000 34,62000 44,23000 34,62000 
87,27000 90,91000  100 36,36000 38,18000 47,27000 
34,62000 44,23000 38,18000 89,80000  100 90,38000 
30,77000 34,62000 47,27000 86,54000 90,38000  100 

我想找到最大值的雙矩陣。我用

ILNumerics.ILRetArray<double> maxValue = ILNumerics.ILMath.maxall(matrixSimilarity); 

結果包括maxValue = 100 我想沒有考慮對價值產生的對角=>包括maxValue = 90,91

如何在C#ilnumerics功能做到這一點?

+0

留意你的變量聲明。你基本上只會使用ILArray 。 ILRetArray僅用於函數聲明。請參閱:http://ilnumerics.net/GeneralRules.html –

回答

2

有可能是結果更快的方式,但是這會工作:現在

ILArray<double> E = counter(5, 5); 

E是:

<Double> [5,5] 
    [0]:   1   6   11   16   21 
    [1]:   2   7   12   17   22 
    [2]:   3   8   13   18   23 
    [3]:   4   9   14   19   24 
    [4]:   5   10   15   20   25 

複製到一個新的變量,修改對角線並獲得最大值:

// make a copy of E 
ILArray<double> maxE = E.C; 
// set diagonal of the copy to smallest value 
maxE[r(0,maxE.S[0]+1,numel(maxE)-1)] = minall(maxE); 
// compute the max value 
maxE = maxall(maxE); 

>maxE 
<Double>   24 

請注意,代碼需要在ILMath子類的上下文中執行, 照常。

相關問題