功能不检索其中一个参数

时间:2017-11-28 15:12:13

标签: matlab function octave

这可能只是一个非常小的错误但我在调用函数时遇到错误:

error: 'D' undefined near line 7 column 25

我的功能是:

function dxdt = s(t,u,D,D0,ni,ax,ay,bn,bx,ex,ey,epsilon)
  D = D0*(1+epsilon*sin(2*pi*t));
  n = u(1);
  x = u(2);
  y = u(3); 
  dxdt = [D*ni - D*n - (ax*(n/(bn+n))*x); ...
          -D*x+ex*ax*(n/(bn+n))*x-ay*(x/(bx+x))*y; ...
          -D*y+ey*ay*(x/(bx+x))*y];
end

我把所有东西放在这里,但我认为只有D = ...部分很重要。在我的脚本中,我以这种方式调用函数:

[T,U] = ode45(@(t,u) s(t,u,D,D0,ni,ax,ay,bn,bx,ex,ey,epsilon),interval,u0);

1 个答案:

答案 0 :(得分:0)

在致电ode45时,您正在创建此anonymous function

@(t,u) s(t,u,D,D0,ni,ax,ay,bn,bx,ex,ey,epsilon)

此函数将接受在调用时应传递给它的两个参数tu。在创建匿名函数之前,需要定义所有其他变量,例如D。您的错误表明它们不是。

s的这些附加参数也将be fixed at the value they had when the anonymous function was created,因此即使您在创建匿名函数后更改D,该函数仍会使用之前的D值在调用函数s时。

查看有关变量范围的一些文档可能也会有所帮助: