如何在ilnumerics对称矩阵中找到最大值?

时间:2013-10-02 07:21:43

标签: c# 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。 我想要结果而不取对角线上的值=&gt; maxValue = 90,91

如何在C#中使用ilnumerics函数?

1 个答案:

答案 0 :(得分: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的子类的上下文中执行。