Thursday, August 13, 2009

global


Define a global variable

Syntax

  • global X Y Z

Description

global X Y Z defines X, Y, and Z as global in scope.

Ordinarily, each MATLAB function, defined by an M-file, has its own local variables, which are separate from those of other functions, and from those of the base workspace. However, if several functions, and possibly the base workspace, all declare a particular name as global, they all share a single copy of that variable. Any assignment to that variable, in any function, is available to all the functions declaring it global.

If the global variable does not exist the first time you issue the global statement, it is initialized to the empty matrix.

If a variable with the same name as the global variable already exists in the current workspace, MATLAB issues a warning and changes the value of that variable to match the global.

Remarks

Use clear global variable to clear a global variable from the global workspace. Use clear variable to clear the global link from the current workspace without affecting the value of the global.

To use a global within a callback, declare the global, use it, then clear the global link from the workspace. This avoids declaring the global after it has been referenced. For example,

uicontrol('style','pushbutton','CallBack',...

'global MY_GLOBAL,disp(MY_GLOBAL),MY_GLOBAL = MY_GLOBAL+1,clear MY_GLOBAL',...

'string','count')

There is no function form of the global command (i.e., you cannot use parentheses and quote the variable names).

Examples

Here is the code for the functions tic and toc (some comments abridged). These functions manipulate a stopwatch-like timer. The global variable TICTOC is shared by the two functions, but it is invisible in the base workspace or in any other functions that do not declare it.

  • function tic
    % TIC Start a stopwatch timer.
    % TIC; any stuff; TOC
    % prints the time required.
    % See also: TOC, CLOCK.
    global TICTOC
    TICTOC = clock;

    function t = toc
    % TOC Read the stopwatch timer.
    % TOC prints the elapsed time since TIC was used.
    % t = TOC; saves elapsed time in t, does not print.
    % See also: TIC, ETIME.
    global TICTOC
    if nargout < 1
    elapsed_time = etime(clock,TICTOC)
    else
    t = etime(clock,TICTOC);
    end

No comments:

Post a Comment