Как совместно использовать глобальные переменные в нескольких сценариях октавы?

Предположим, у меня есть три октавы скрипты a.m, b.m, c.m, и две глобальные переменные x, y. Можно ли определить эти глобальные переменные таким образом, чтобы они могли совместно использоваться в сценариях? Например, в отдельном файле include?

в более общем плане, как работают глобальные переменные в GNU octave?

4 ответов


Кажется, вы должны объявить переменную глобальной, а вы и должны явно сообщить Октаве, что переменная, на которую вы ссылаетесь, находится в другой (глобальной) области.

в библиотеке.м

global x = 1;

в Main.м

function ret = foo()
    global x;
    5 * x;
endfunction

foo () должен вернуть 5


как использовать глобальные переменные в Octave:

создайте файл с именем tmp.m и поместите в него следующий код.

global x;   %make a global variable called x
x = 5;       %assign 5 to your global variable
tmp2();     %invoke another function

создайте еще один файл с именем tmp2.m и поместите туда следующий код:

function tmp2()
  %the following line is not optional, it tells this function go go out and get
  %the global variable, otherwise, x will not be available.
  global x 
  x
end

когда вы запускаете вышеуказанный код следующим образом:

octave tmp.m

вы получаете этот вывод:

x =  5

глобальная переменная x была сохранена в tmp.m и восстановлено в tmp2.м


что-то типа:

файл с глобальными переменными globals.m С:

global my_global = 100;

и просто использовать source внутри каждого файла. Например:

source globals.m

global my_global

printf("%d\n", my_global);

Не уверен, что это лучшее решение, но я закончил создание сценария-оболочки, из которого вызываются все остальные сценарии. Я положил свои глобалы в этот сценарий-обертку