# Morpheus: Perform calculations with matrices

 Last Updated Ratings Unique User Downloads Download Rankings 2017-06-25 (2 years ago) Not enough user ratings Total: 76 All time: 9,563 This week: 400
 Version License PHP version Categories morpheus 1.0.0 Custom (specified... 5 PHP 5, Math
Description Author

This class can perform calculations with matrices.

It may take as parameter a bi-dimensional array with the values of a matrix cells.

The class can perform several operations with the matrix, like adding and subtracting matrix values, multiplying or dividing by a scalar value, multiplying matrices by each other, transposing, etc..

 Performance Level
Name: Classes: Julian Finkler `` 8 packages by Julian Finkler Germany 26 3089 177 in Germany 164 6 in Germany
Innovation award

Nominee: 3x

Winner: 1x

Details

# 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],
// ]
``````
 Files
File Role Description
src (1 file)
tests (2 files)
.travis.yml Data Auxiliary data
composer.json Data Auxiliary data
phpunit.xml Data Auxiliary data

 Files / src
File Role Description
Matrix.php Class Class source

 Files / tests
File Role Description
For more information send a message to `info at phpclasses dot org`.