%PDF- %PDF-
Direktori : /home/silvzytp/crm-ind-code/vendor/markbaker/matrix/classes/src/ |
Current File : //home/silvzytp/crm-ind-code/vendor/markbaker/matrix/classes/src/Builder.php |
<?php /** * * Class for the creating "special" Matrices * * @copyright Copyright (c) 2018 Mark Baker (https://github.com/MarkBaker/PHPMatrix) * @license https://opensource.org/licenses/MIT MIT */ namespace Matrix; /** * Matrix Builder class. * * @package Matrix */ class Builder { /** * Create a new matrix of specified dimensions, and filled with a specified value * If the column argument isn't provided, then a square matrix will be created * * @param mixed $fillValue * @param int $rows * @param int|null $columns * @return Matrix * @throws Exception */ public static function createFilledMatrix($fillValue, $rows, $columns = null) { if ($columns === null) { $columns = $rows; } $rows = Matrix::validateRow($rows); $columns = Matrix::validateColumn($columns); return new Matrix( array_fill( 0, $rows, array_fill( 0, $columns, $fillValue ) ) ); } /** * Create a new identity matrix of specified dimensions * This will always be a square matrix, with the number of rows and columns matching the provided dimension * * @param int $dimensions * @return Matrix * @throws Exception */ public static function createIdentityMatrix($dimensions, $fillValue = null) { $grid = static::createFilledMatrix($fillValue, $dimensions)->toArray(); for ($x = 0; $x < $dimensions; ++$x) { $grid[$x][$x] = 1; } return new Matrix($grid); } }