Octave:我该如何在任何程序中使用全局常量呢?



我想有一个常量列表,随时可以在我编写的任何脚本或函数中使用。例如,我一直在任何脚本的开头定义像hbar(普朗克常数)这样的常量。

我应该:

  1. 在脚本中创建一个常量列表,并每次加载该脚本我想用
  2. 或在工作空间中保存常量并加载,
  3. 或者我是否有可能拥有全局变量,即使当我关闭并重新打开Octave,
  4. 还是别的什么?

如果您使用GNU Octave,我建议使用杂项包和函数physical_constant,它已经有335个常量。在你的例子中:

[val, uncertainty, unit] = physical_constant ("Planck constant over 2 pi")
val =    1.0546e-34
uncertainty =    4.7000e-42
unit = J s

如果你不想要这个,那么使用函数,而不是全局变量

正如您所指出的,有几种方法可以解决这个问题。要解决第三个选项,它似乎最接近你想要的精神,你至少有两种方法来处理它。

1)。如果变量需要是可变的。创建一个函数或脚本,将变量初始化为您想要的形式。我将参考MATLAB文档,但基本上应该是相同的。

function initglobals()
  global the_answer
  the_answer = 42;
end

当你想在脚本中使用这些全局变量时,你首先要向Octave表明你将使用这个变量作为全局变量:

...
global the_answer
disp(the_answer) %prints 42
...

为了更有用,我建议生成一个启动脚本并放入您的.octaverc文档中。这个启动脚本可以调用这个函数来初始化全局变量。

2)。如果全局变量应该是不可变的(例如,一个物理常数),你的另一个选择是定义一个函数来返回你想要的值。

function [out] = the_answer()
  out = 42;
end

那么你可以简单地使用the_answer来访问你的常量。

在这两种情况下,您都希望将这些函数添加到路径中。创建函数集合并将它们放在某个位置,然后将该位置添加到路径中。文档

相关内容

  • 没有找到相关文章

最新更新