1

我有一个像这样的双精度数字对称矩阵

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 函数做到这一点?

4

1 回答 1

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 的子类的上下文中执行。

于 2013-10-02T10:53:11.073 回答