2010-06-25 7 views
1

Я новичок в Matlab и испытываю трудности с пониманием глобальных переменных. Например,global in Matlab

global x y z 

Что означает global? Не могли бы вы привести мне пример?

ответ

4

Без global объявленная переменная имеет ограниченный объем, то есть ее нельзя использовать вне «части» матрицы, где она объявлена. This wiki article имеет достойное обсуждение того, какая область охвата в общем смысле.

Например, если вы объявляете переменную внутри определения функции, эта переменная может использоваться только внутри этой функции, а не в другой функции. Если вы определяете функцию в командной строке (так называемое «базовое рабочее пространство»), ее нельзя использовать в функциях.

global определяет переменную в "global" scope - ее можно использовать в любом месте, в любой функции и т. Д. За исключением ограниченных случаев, это, как правило, плохая идея, поскольку она позволяет контролировать, как и когда переменная сильно изменилась. Обычно вам лучше возвращать что-то из функции, а затем передавать ее другому.

4

Ключевое слово GLOBAL в MATLAB позволяет вам определять переменные в одном месте и отображать их в другом. Заявление global x y z объявляет xy и z должно быть глобальным. Если это определение было помещено внутри области функций и соответствующее определение global в отдельной функции, то две функции могут обмениваться данными без необходимости передавать параметры. Как так:

%% fcn1.m 
function fcn1(val) 
global store 
store = val 

%% fcn2.m 
function y = fcn2() 
global store 
y = store; 

Таким образом, вы можете вызвать fcn1 сохранить значение и использовать fcn2 для извлечения значения позже.

Использование GLOBAL данных таким образом скрывает зависимости между вашими функциями и считается довольно плохой практикой.

+0

Можно ли сказать, что глобальные переменные среди функций любят атрибуты в классе? – ibrahimyilmaz

+0

Совсем нет. global определяет переменную, разделяемую каждой частью matlab. Фактически полная противоположность атрибутов класса. – Marc