【发布时间】:2020-04-26 20:57:44
【问题描述】:
虽然矩阵的顺序应该没问题,但下面的代码会抛出异常。这可能是一件小事,我无法注意到,但无法弄清楚。
<?php
$mat1 = array(5,1);
$mat2 = array(1,5);
function matrixmult($m1,$m2){
$r=count($m1);
$c=count($m2[0]);
$p=count($m2);
if(count($m1[0])!=$p){throw new Exception('Incompatible matrixes');}
$m3=array();
for ($i=0;$i< $r;$i++){
for($j=0;$j<$c;$j++){
$m3[$i][$j]=0;
for($k=0;$k<$p;$k++){
$m3[$i][$j]+=$m1[$i][$k]*$m2[$k][$j];
}
}
}
}
return($m3);
}
matrixmult($mat1,$mat2);
?>
【问题讨论】:
-
您不能将 1x2 矩阵乘以 1x2 矩阵; $mat2 应该是一个 2x1 矩阵:
$mat2 = array(array(1),array(5)); -
马克,他还缺少包裹在他们周围的
array( )。他本质上是在这里定义向量,而不是二维数组。