我的问题:我编写了一个使用varargin语法的函数,解释为here。现在我遇到了如何创建一个我可以传递给这个函数的参数列表的问题。设置与此相当: 说我有一个功能
function defineStrength($param)
{
if ($param) {
return 2;
}
return 0;
}
$strength = 0;
$f_name = true;
$l_name = false;
$full_name = false;
$strength += defineStrength($f_name);
$strength += defineStrength($l_name);
$strength += defineStrength($full_name);
用矩阵A确定任意多个矩阵的乘积。现在我想确定A与n矩阵的乘积,其中n先前在代码中设置。它看起来像这样:
function defineStrengthFromArray(array $row)
{
$strength = 0;
foreach ($row as $param) {
$strength += defineStrength($param);
}
return $strength;
}
foreach ($query->result_array() as $row){
$strength = defineStrengthFromArray($row);
}
我需要写什么而不是?为了得到与此相同的结果:
matrixmult(A, varargin)
由于变量输入始终导致有关如何使用varargin而不是如何传递以循环形式创建的参数的问题,因此谷歌没有帮助。
我尝试了各种各样的东西,比如创建一个字符串',B'并重复几次以使用eval(字符串)。
如果这应该是重复,请做标记。
感谢您的帮助。
答案 0 :(得分:1)
您可以将所有输入放入单元格数组中,然后使用{:}
语法create a comma-separated list,然后将其作为多个输入传递给您的函数。
所以在你的情况下,像:
% Create n copies of B each within it's own cell array element
inputs = repmat({B}, [1 n]);
% Pass all of these B matrices to your function
matrixmult(A, inputs{:});