【发布时间】:2020-03-16 04:15:18
【问题描述】:
我想知道如何使用输入向量而不是参数列表调用函数句柄。
所以,如果我有一个定义的函数句柄:(我想很明显我正在这里拟合函数)
fitFunctionHandle = @(a1, wG1, x1,a2, wG2, x2, c, x)(FitGaussianFn(x, [a1, 0, wG1, x1]) +FitGaussianFn(x, [a2, 0, wG2, x2]) + c
我有一个输入向量要交给它
a1Init = 1
wG1Init = 2
x1Init = 3
a2Init = 4
wG2Init = 5
x2Init = 6
a2Init = 7
x = 8
%startPoint = [a1Init, wG1, x1,a2, wG2, x2, c]
inputArray = [a1Init, wG1, x1,a2, wG2, x2, c, x]
如何以向量 startPoint 作为输入来调用它。如果我尝试(例如)
>> fitFunctionHandle(inputArray)
我收到一个错误:
输入参数不足。
这是有道理的,因为它需要 8 个输入而不是 8 个元素的向量 - 但我想知道是否有这样的调用方式。我认为例如在 python 中,您可以将数组转换为列表或其他内容。
我知道在这个例子中我可以简化一些事情,我有一个已知输入的列表,所以我可以这样做:
fitFunctionHandle(a1Init, wG1, x1,a2, wG2, x2, c, x)
或
fitFunctionHandle(inputArray(1),inputArray(2),inputArray(3,inputArray(4), inputArray(5), inputArray(6),inputArray(7),inputArray(8))
但是!我想我试图允许在我不知道会有多少争论的地方进行扩展。 对于奖励积分(再次因为我正在研究拟合函数) - 当 x 也是向量时知道如何调用它会很酷。我怀疑我会做类似的事情
arrayfunc(fitFunctionHandle([startPoint,x]), xVector)
提前感谢您的帮助。
【问题讨论】:
标签: matlab function function-handle