devtronic / morpheus
A PHP matrix calculation helper
1.0.2
2018-07-07 07:02 UTC
Requires
- php: >=5.6
Requires (Dev)
- phpunit/phpunit: ~5.7
This package is auto-updated.
Last update: 2024-10-22 00:21:19 UTC
README
Morpheus
Morpheus is a matrix calculation class for PHP
Installation
$ composer require devtronic/morpheus
Usage
Create a Matrix
<?php use Devtronic\Morpheus\Matrix; $matrix = new Matrix([ [1, 2, 3], [4, 5, 6] ]); // or $matrix = new Matrix(); $matrix->setData([ [1, 2, 3], [4, 5, 6] ]);
Simple Operations
Add
<?php use Devtronic\Morpheus\Matrix; $matrixA = new Matrix([ [1, 2, 3], ]); $matrixB = new Matrix([ [4, 5, 6], ]); $matrixA->add($matrixB); print_r($matrixA->getData()); // [ [5, 7, 9] ]
Subtract
<?php use Devtronic\Morpheus\Matrix; $matrixA = new Matrix([ [4, 5, 6], ]); $matrixB = new Matrix([ [1, 2, 3], ]); $matrixA->subtract($matrixB); print_r($matrixA->getData()); // [ [3, 3, 3] ]
Multiply
<?php use Devtronic\Morpheus\Matrix; $matrixA = new Matrix([ [1, 2, 3], [3, 2, 1], ]); $matrixB = new Matrix([ [1, 2], [10, 20], [100, 200], ]); $matrixA->subtract($matrixB); print_r($matrixA->getData()); // [ // [321, 642], // [123, 246], // ]
Scalar Operations
Scalar Multiply
<?php use Devtronic\Morpheus\Matrix; $matrix = new Matrix([ [1, 2, 3], [3, 2, 1], ]); $matrix->scalarMultiply(5); print_r($matrix->getData()); // [ // [5, 10, 15], // [15, 10, 5], // ]
Scalar Division
<?php use Devtronic\Morpheus\Matrix; $matrix = new Matrix([ [10, 15, 30], [30, 10, 15], ]); $matrix->scalarDivide(5); print_r($matrix->getData()); // [ // [2, 3, 10], // [10, 2, 3], // ]
Custom Operations
Scalar Operations
<?php use Devtronic\Morpheus\Matrix; $matrix = new Matrix([ [1, 0, 0], [1, 1, 0], ]); $matrix->scalarMatrixOperation(function($element) { return $element == 1 ? 0 : 1; }); print_r($matrix->getData()); // [ // [0, 1, 1], // [0, 0, 1], // ]
"Synchronous" Operations
<?php use Devtronic\Morpheus\Matrix; $matrixA = new Matrix([ [1, 0, 0], [1, 1, 0], ]); $matrixB = new Matrix([ [1, 1, 0], [0, 1, 0], ]); // Simple XOR Operation $matrixA->synchronousMatrixOperation($matrixB, function($left, $right) { return intval($left ^ $right); }); print_r($matrixA->getData()); // [ // [0, 1, 0], // [1, 0, 0], // ]
Transformation
Transpose
<?php use Devtronic\Morpheus\Matrix; $matrix = new Matrix([ [1, 2], [3, 4], [5, 6], ]); $matrix->transpose(); print_r($matrixA->getData()); // [ // [1, 3, 5], // [2, 4, 6], // ]