所以我得到了这个功能:
function M = getA(X)
global h;
QPL96 = h;
M = QPL96;
endfunction
现在:
octave:115> h
h = 0.10000
octave:116> getA(X)
ans = [](0x0)
这不奇怪吗? 只要没有涉及h的表达式就可以工作。否则返回那个垃圾。 为什么我不能这样做?我必须通过制作一个参数来解决它吗?
答案 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是同一个问题。