devtronic / morpheus
PHP矩阵计算助手
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-09-22 00:05:56 UTC
README
Morpheus
Morpheus是PHP的矩阵计算类
安装
$ composer require devtronic/morpheus
用法
创建矩阵
<?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] ]);
简单操作
加法
<?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] ]
减法
<?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] ]
乘法
<?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], // ]
标量操作
标量乘法
<?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], // ]
标量除法
<?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], // ]
自定义操作
标量操作
<?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], // ]
"同步"操作
<?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], // ]
转换
转置
<?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], // ]