git-svn-id: https://phpexcel.svn.codeplex.com/svn/trunk@59884 2327b42d-5241-43d6-9e2a-de5ac946f064
		
			
				
	
	
		
			79 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
include "../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>";
 | 
						|
?>
 |