尽管矩阵的顺序应该没问题,但以下代码会抛出异常。这可能是一件我无法注意到的小事,但无法弄清楚。
<?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);
?>
您通过两种方式指定了错误的测试矩阵:
- 数组不是二维的(即数字数组的数组)。
- 即使你包裹了另一个
array( )
在它们周围,第一个矩阵的宽度等于第二个矩阵的高度的条件对于 [5 1] 和 [1 5] 不成立,它们都是 2 宽和 1 高。
你需要的是类似的东西
$mat1 = array(array(5,1));
$mat2 = array(array(1),array(5));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)