min method

dynamic min({
  1. int? axis,
})

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;
  }
}