3

在 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()
4

1 回答 1

4

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

对于稀疏矩阵,您可能想要这样做matrix.Enumerate(Zeros.AllowSkip).Maximum(),尽管如果返回值为负数(但可能必须为零),则需要特殊处理。

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

于 2015-11-09T16:33:16.620 回答