【问题标题】:Calling a function of X in Matlab在 Matlab 中调用 X 的函数
【发布时间】:2015-07-20 09:11:54
【问题描述】:

(我看过一些类似问题的答案,但他们并没有真正回答所问的问题,所以我试着比其他问题更好地解释一下)

标题信息量不大,但我几乎正在尝试编写一个 matlab 脚本,以完成对等分法的各种重复,(对我的问题并不重要,但它是一种找到数学函数根的方法.)

我遇到的问题是,目前我不知道如何为不同的功能调用我的脚本。目前,我必须将每个函数写入脚本,并且对于每个新函数,我都必须更改脚本。

我想像bisection(f(x),a,b,N) 一样调用我的函数(不用担心a、b、N),这样我就可以在调用它时选择函数,而不是在脚本本身中。但是当我将f(x) 写成x^2 +x 之类的东西时,它会尝试评估它是否存在不存在的x 并返回错误。无论如何要调用 x 的函数并将其保留为函数,以便以后我可以以不同的值对其进行评估。

   e.g. f(2)=6, f(a)=a^2 +a, f(b)=b^2 +b.

【问题讨论】:

  • 所以你想把一个函数放在另一个函数的参数中,就这样?

标签: matlab function bisection


【解决方案1】:

你应该使用function handles

举个例子:

%Here f is the function you want to call
function M = testfun(f,x)
    M = f(x);
end

然后,为了调用它,你把一个函数句柄作为一个参数

f = @(x) magic(x);
M = testfun(f,3)
M =

     8     1     6
     3     5     7
     4     9     2

【讨论】:

    【解决方案2】:

    如果你的函数 f 是一个“简单”的函数,这似乎是使用的地方anonymous functions

    如果您确保它们始终具有相同的输入(f(x) 始终),那么您可以将函数创建为:

    f=@(x)(x.^2+x+2);
    

    或者...

    f=@(x)(argtg(x)+log10(x.^2));
    

    然后调用传递f 作为参数的函数。在bisection 内部,您可以通过f(3) 或任何数字调用f,它会返回结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多