min method
Returns the smallest value in the matrix along the specified axis.
If axis
is null, the smallest value in the matrix is returned.
If axis
is 0, a list of the smallest values in each column is returned.
If axis
is 1, a list of the smallest values in each row is returned.
Example:
var matrix = Matrix.fromList([[2, 3], [1, 4]]);
var minValue = matrix.min();
print(minValue); // Output: 1
var rowMinValues = matrix.min(axis: 1);
print(rowMinValues); // Output: [2, 1]
var colMinValues = matrix.min(axis: 0);
print(colMinValues); // Output: [1, 3]
Throws Exception if the matrix is empty.
Throws ArgumentError if axis
is not null, 0, or 1.
Implementation
dynamic min({int? axis}) {
int rows = rowCount;
int cols = columnCount;
if (rows == 0 || cols == 0) {
throw Exception("Matrix is empty");
}
if (axis != null && axis != 0 && axis != 1) {
throw ArgumentError(
"Axis must be 0 (for columns), 1 (for rows), or null (for total min)");
}
switch (axis) {
case 0:
return List<dynamic>.generate(_data[0].length,
(i) => _data.map((row) => row[i]).reduce(math.min));
case 1:
return _data.map((row) => row.reduce(math.min)).toList();
default:
dynamic minValue = _data[0][0];
for (var row in _data) {
dynamic rowMin = row.reduce(math.min);
if (rowMin < minValue) {
minValue = rowMin;
}
}
return minValue;
}
}