mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-01-11 17:58:41 +00:00
Matrix fixes
This commit is contained in:
parent
81d20b1d3f
commit
68051600a3
|
|
@ -134,7 +134,7 @@ class Matrix implements \ArrayAccess, \Iterator
|
|||
public function transpose() : Matrix
|
||||
{
|
||||
$matrix = new Matrix($this->n, $this->m);
|
||||
$matrix->setMatrix(array_map(null, $matrix->getMatrix()));
|
||||
$matrix->setMatrix(array_map(null, ...$this->matrix));
|
||||
|
||||
return $matrix;
|
||||
}
|
||||
|
|
@ -152,23 +152,40 @@ class Matrix implements \ArrayAccess, \Iterator
|
|||
return $this->matrix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get matrix rank.
|
||||
*
|
||||
* @return int
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function rank() : int
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set matrix array.
|
||||
*
|
||||
* @param array $matrix Matrix
|
||||
*
|
||||
* @return Matrix
|
||||
*
|
||||
* @throws \Exception
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function setMatrix(array $matrix)
|
||||
public function setMatrix(array $matrix) : Matrix
|
||||
{
|
||||
if ($this->m !== count($matrix) || $this->n !== count($matrix[0])) {
|
||||
throw new DimensionException(count($matrix), count($matrix[0]));
|
||||
}
|
||||
|
||||
$this->matrix = $matrix;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -356,7 +373,7 @@ class Matrix implements \ArrayAccess, \Iterator
|
|||
for ($c = 0; $c < $nDim; $c++) { // Column of $matrix
|
||||
$temp = 0;
|
||||
|
||||
for ($j = 0; $j < $mDim; $i++) { // Row of $matrix
|
||||
for ($j = 0; $j < $mDim; $j++) { // Row of $matrix
|
||||
$temp += $this->matrix[$i][$j] * $matrixArr[$j][$c];
|
||||
}
|
||||
|
||||
|
|
@ -557,6 +574,14 @@ class Matrix implements \ArrayAccess, \Iterator
|
|||
return $newMatrix;
|
||||
}
|
||||
|
||||
public function diagonalize() : Matrix
|
||||
{
|
||||
$newMatrix = new Matrix($this->m, $this->n);
|
||||
$newMatrix->setMatrix($this->diag($this->matrix));
|
||||
|
||||
return $newMatrix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Diagonalize matrix.
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user