如何在 MathNet 中找到最大矩阵元素?
How can I find maximum matrix element in 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()
试试 matrix.Enumerate().Maximum()
,这样既简单又快捷。您也可以使用 Enumerable.Max
扩展方法,但在密集矩阵的情况下 Statistics.Maximum
明显更快。
对于稀疏矩阵,您可能希望改为 matrix.Enumerate(Zeros.AllowSkip).Maximum()
,尽管如果返回值为负(但可能必须为零)则需要特殊处理。
另请注意,AbsoluteMaximum
确实是绝对最大值,不同于最大值(|-5| > |3|
,而是-5 < 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()
试试 matrix.Enumerate().Maximum()
,这样既简单又快捷。您也可以使用 Enumerable.Max
扩展方法,但在密集矩阵的情况下 Statistics.Maximum
明显更快。
对于稀疏矩阵,您可能希望改为 matrix.Enumerate(Zeros.AllowSkip).Maximum()
,尽管如果返回值为负(但可能必须为零)则需要特殊处理。
另请注意,AbsoluteMaximum
确实是绝对最大值,不同于最大值(|-5| > |3|
,而是-5 < 3
)。