【问题标题】:Passing an element of a function to a function in MATLAB将函数的元素传递给 MATLAB 中的函数
【发布时间】:2020-11-20 18:50:20
【问题描述】:

我知道“将函数传递给函数”主题定义明确,我的问题略有不同。

我有以下功能:

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 进行评估。

任何帮助将不胜感激。

注意:执行此操作的一种方法是将ij 信息连同function1 一起发送到function2。然后在function2 中评估function1 并使用ij 提取我需要的元素。我寻求的解决方案不是这个,而是直接发送function1 输出的元素(i,j)以在function2 进行评估。

【问题讨论】:

  • 我很难理解你的问题。 [a b; c d] 是什么?这些是函数,还是这些值?我认为minimal reproducible example 在这里会有所帮助。
  • 它们是 x 的函数,在函数 1 中进行评估。我将在此用一个简单的示例相应地编辑帖子。
  • 你的实现中的 for 循环有什么问题?
  • 我希望 function2 在 function2 中定义的特定点评估 function1 的第 i、j 个分量。

标签: function matlab parameter-passing


【解决方案1】:

您可以让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

【讨论】:

  • 这对我的情况非常有效。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 1970-01-01
相关资源
最近更新 更多