3

所以我得到了这个功能:

function M = getA(X)
global h;
QPL96 =  h;
M = QPL96;
endfunction

现在:

octave:115> h
h =  0.10000
octave:116> getA(X)
ans = [](0x0)

这不是很奇怪吗?只要没有涉及 h 的表达式就可以工作。否则返回垃圾。为什么我不能这样做?我必须通过使 h 争论来解决它吗?

4

1 回答 1

3

您必须在h要使用 "global" 的任何地方声明为全局h,包括您的主体。所以global h在提示符下输入,你会没事的。请参阅文档。以下对我来说很好:

octave> function M = getA(X)
> global h;
> M = h;
> endfunction
octave> h = 0.01
h =  0.0010000
octave> getA
ans = [](0x0)
octave> global h
octave> h
h = [](0x0)
octave> h = 0.01
h =  0.010000
octave> h
h =  0.010000
octave> getA
ans =  0.010000

但实际上,您不应该使用全局变量,这是非常糟糕的做法。将变量作为参数传递。如果您发现自己传递了同一组变量,请传递一个结构,但仍然不要使用全局变量。

编辑: 是同一个问题。

于 2012-12-04T23:07:35.093 回答