我有一个像那样的双重对称矩阵
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函数?
答案 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的子类的上下文中执行。