## devtronic /morpheus

A PHP matrix calculation helper

##### Details

Source

Issues

18

0

1

2

0

1.0.2 2018-07-07 07:02 UTC

This package is auto-updated.

Last update: 2022-11-21 20:22:38 UTC

# 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

<?php

use Devtronic\Morpheus\Matrix;

\$matrixA = new Matrix([
[1, 2, 3],
]);

\$matrixB = new Matrix([
[4, 5, 6],
]);

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],
// ]