Matrix.range constructor
Creates a Matrix with values in the specified range, incremented or decremented by the specified step size.
end
: End value (exclusive).
start
: Start value. Default is 0.
step
: Step size. Default is 1. Can be negative for decrementing ranges.
isColumn
: If true, creates a column matrix. Default is false (creates a row matrix).
Example:
var m = Matrix.range(6, start: 1, step: 2, isColumn: true);
print(m);
// Output:
// Matrix: 3x1
// ┌ 1 ┐
// | 3 |
// └ 5 ┘
Implementation
factory Matrix.range(int end,
{int start = 0, int step = 1, bool isColumn = false}) {
if (step == 0) {
throw ArgumentError('Step must not be zero');
}
if (step > 0 && start >= end) {
throw ArgumentError(
'Start must be less than end for positive step sizes');
}
if (step < 0 && start <= end) {
throw ArgumentError(
'Start must be greater than end for negative step sizes');
}
List<dynamic> range = [];
for (int i = start; step > 0 ? i < end : i > end; i += step) {
range.add(i);
}
if (isColumn) {
return Matrix(range.map((x) => [x]).toList());
} else {
return Matrix([range]);
}
}