所以我得到了这个功能:
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 争论来解决它吗?
您必须在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
但实际上,您不应该使用全局变量,这是非常糟糕的做法。将变量作为参数传递。如果您发现自己传递了同一组变量,请传递一个结构,但仍然不要使用全局变量。
编辑: 这是同一个问题。