在从脚本文件加载的函数中使用全局变量

时间:2012-12-04 22:52:25

标签: matlab gnu octave

所以我得到了这个功能:

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

现在:

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

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

1 个答案:

答案 0 :(得分:3)

您必须将h声明为全球所有您想要使用" global" h,包括你的主体。因此,在提示符下键入global h,您就可以了。请参阅documentation。以下工作对我来说很好:

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

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

编辑: this是同一个问题。