Home  |  Linux  | Mysql  | PHP  | XML
From:hdeus@yahoo.com Date:Mon Oct  6 08:01:29 2008
Subject:note 86161 added to function.array-sum
Here is how you can multiply two arrays in the form of matrixes using a bit of matrix algebra (M*M).
By calling the function multiplyMatrix, you will be multiplying two sparse matrixes (zeros need not be included in the array for the operation to be performed).

<?php
$M = array(
0=>array(1=>1,4=>1),
1=>array(2=>1,3=>1),
3=>array(1=>1),
4=>array(5=>1),
5=>array(6=>1)
);

$M1 = multiplyMatrix($M, $M); //multiplying $M by itself

echo '<pre>';print_r($M1);echo '</pre>';

function multiplyMatrix($M1, $M2)
	{
#Helena F Deus, Oct 06, 2008
##Multiply two matrixes; $M1 and $M2 can be sparse matrixes, the indexes on both should match
		if(is_file($M1)) {$matrix1 = unserialize(file_get_contents($M1));}
		else $matrix1 = $M1;
		
			
		#transpose M2
		$M2t = transpose($M2);
		
		foreach ($M2t as $row=>$tmp) {
			##sum the result of the value in the col multiplied by the value in the vector on the corresponding row
				
				foreach ($M1 as $row1=>$tmp1) {
					
					$multiply[$row1] = array_rproduct($tmp,$tmp1);
					
					if(!$multiply[$row1]){
						  exit;
						}
				}
				
				foreach ($multiply as $row1=>$vals) {
					
					$sum[$row][$row1]=array_sum($vals);
				}
				
		}
	
	$r=transpose($sum);
	
	return ($r);
	}

function transpose($M)
{
foreach ($M as $row=>$cols) {
			
			foreach ($cols as $col=>$value) {
				 if($value)
				 $Mt[$col][$row]=$value;
			}
		}
		ksort($Mt);
		
return ($Mt);			
}

function array_rproduct($a1, $a2)
{
	
	
	foreach ($a1 as $line=>$cols) {
		$a3[$line] = $a1[$line]*$a2[$line];
		foreach ($a2 as $line2=>$cols2) {
			$a3[$line2] = $a1[$line2]*$a2[$line2];
		}
	}	
	ksort($a3);
	
	
	return ($a3);
	
	
}

?>
----
Server IP: 208.69.120.35
Probable Submitter: 143.111.22.28
----
Manual Page -- http://www.php.net/manual/en/function.array-sum.php
Edit        -- https://master.php.net/note/edit/86161
Del: integrated  -- https://master.php.net/note/delete/86161/integrated
Del: useless     -- https://master.php.net/note/delete/86161/useless
Del: bad code    -- https://master.php.net/note/delete/86161/bad+code
Del: spam        -- https://master.php.net/note/delete/86161/spam
Del: non-english -- https://master.php.net/note/delete/86161/non-english
Del: in docs     -- https://master.php.net/note/delete/86161/in+docs
Del: other reasons-- https://master.php.net/note/delete/86161
Reject      -- https://master.php.net/note/reject/86161
Search      -- https://master.php.net/manage/user-notes.php

Navigate in group php.notes at sever news.php.net
Previous Next




  
© No Copyright
You are free to use Anything
Site Maintained by Zareef Ahmed
Powered By PHP Consultants