我知道"将函数传递给函数";主题定义明确,我的问题略有不同。
我有以下功能:
function P = function1(x)
a = x^2; b = 1/x;
c = x^3; d = sqrt(x);
P = [a b; c d]; % they are all functions of x
end
在for循环中,我想将输出function1
到function2
的某些元素传递到其中进行评估,如下所示:
for i=1:2
for j=1:2
A = function1(a);
B = function2(A(i,j));
end
end
然而,我在a
中对函数1的评估(不要与function1
中的a
混淆(必须在function2
中进行。换句话说,我想将我的function1
的输出元素(i
,j
(发送到function2
,以在function2
中定义的某个值a
进行评估。
如有任何帮助,我们将不胜感激。
注意:这样做的一种方法是将i
和j
信息与function1
一起发送到function2
。然后评估function2
内部的function1
,并使用i
和j
提取我需要的元素。我寻求的解决方案不是这样,而是直接发送function1
输出的元素(i
、j
(以在function2
处进行评估。
您可以使用function1
返回函数句柄,而不是计算值。我们不能创建一个函数句柄数组,但我们可以创建一个包含函数句柄的单元格数组。它看起来是这样的:
A = function1;
B = function2(A{i,j}, a);
function P = function1
a = @(x) x^2;
b = @(x) 1/x;
c = @(x) x^3;
d = @(x) sqrt(x);
P = {a b; c d};
end