| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | <?phpinclude "../Matrix.php";/*** Tiling of matrix X in [rowWise by colWise] dimension. Tiling* creates a larger matrix than the original data X. Example, if* X is to be tiled in a [3 x 4] manner, then:**     /            \*     | X  X  X  X |* C = | X  X  X  X |*     | X  X  X  X |*     \           /** @param X Matrix* @param rowWise int* @param colWise int* @return Matrix*/function tile(&$X, $rowWise, $colWise){  $xArray = $X->getArray();  print_r($xArray);  $countRow    = 0;  $countColumn = 0;  $m = $X->getRowDimension();  $n = $X->getColumnDimension();  if( $rowWise<1 || $colWise<1 ){    die("tile : Array index is out-of-bound.");  }  $newRowDim = $m*$rowWise;  $newColDim = $n*$colWise;  $result = array();  for($i=0 ; $i<$newRowDim; ++$i) {    $holder = array();    for($j=0 ; $j<$newColDim ; ++$j) {      $holder[$j] = $xArray[$countRow][$countColumn++];      // reset the column-index to zero to avoid reference to out-of-bound index in xArray[][]      if($countColumn == $n) { $countColumn = 0; }    } // end for    ++$countRow;    // reset the row-index to zero to avoid reference to out-of-bound index in xArray[][]    if($countRow == $m) { $countRow = 0; }    $result[$i] = $holder;  } // end for  return new Matrix($result);}$X =array(1,2,3,4,5,6,7,8,9);$nRow = 3;$nCol = 3;$tiled_matrix = tile(new Matrix($X), $nRow, $nCol);echo "<pre>";print_r($tiled_matrix);echo "</pre>";?>
 |