如何在MathNet中找到最大矩阵元素?

时间:2015-11-09 00:49:07

标签: c# .net matrix max mathnet

在C#中使用MathNet查找最大矩阵元素的最佳(可读和快速)方法是什么? 这是我的方式:

int size = 4;
var matrix = Matrix.Build.Dense(size, size, Matrix.One);
matrix[3, 3] = 3;
var max = matrix.ReduceRows((v1, v2) => v1.AbsoluteMaximum() > v2.AbsoluteMaximum()? v1 : v2).AbsoluteMaximum()

1 个答案:

答案 0 :(得分:3)

尝试使用matrix.Enumerate().Maximum(),这样既简单又快得多。您也可以使用Enumerable.Max扩展方法,但在密集矩阵的情况下,Statistics.Maximum明显更快。

对于稀疏矩阵,您可能希望改为matrix.Enumerate(Zeros.AllowSkip).Maximum(),但如果返回值为负(但可能必须为零)则需要特殊处理。

另请注意,AbsoluteMaximum实际上是绝对最大值,与最大值(|-5| > |3|,但-5 < 3)不同。