/** * @param NumericMatrix $mX Row Vector * @param NumericMatrix $mY Columnvector * @return NumericMatrix * @throws MathMatrixException */ protected function createFromMatrices(NumericMatrix $mX, NumericMatrix $mY) { $mX = $mX->is('columnvector') ? $mX : ($mX = $mX('Transpose')); $mY = $mY->is('rowvector') ? $mY : ($mY = $mY('Transpose')); $ones = new Ones(); $mVertices = $mX->vertices(); $onesRow = $ones->create([1, $mVertices]); $onesCol = $ones->create([$mVertices, 1]); //C = x * ones (1, n) + ones (n, 1) * y $m1 = $mX('Mul\\Matrix', $onesRow); $m2 = $onesCol('Mul\\Matrix', $mY); $mC = $m1('Add\\Matrix', $m2); $onesSquare = $ones->create([$mVertices, $mVertices]); //C = ones (n) ./ C; return $onesSquare('Div\\Entrywise', $mC); }
public function testYouCanCreateAOnesMatrixWithTwoIntegerParametersGreaterThanOne() { $test = $this->sut->create([3, 3]); $expected = new NumericMatrix([[1, 1, 1], [1, 1, 1], [1, 1, 1]]); $this->assertTrue($test->equality($expected, false)); }