 509f27e5c6
			
		
	
	
		509f27e5c6
		
	
	
	
	
		
			
			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>";
 | |
| ?>
 |