What is the meaning of "global" in matlab GUI?

What is the purpose of using these global function? Why I have to use this?
function testGUI_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
% guidata(hObject, handles);
% set(findall(handles.uipanel1,'-property','enable'),'enable','on');
% set(handles.uipanel1,'visible','on');
% set(findall(handles.uipanel6,'-property','enable'),'enable','off');
% set(handles.uipanel6,'visible','off');
% set(findall(handles.uipanel7,'-property','enable'),'enable','off');
% set(handles.uipanel7,'visible','off');
global setting
global List
global i
setting=0;
i=1;
List=cell(15,1);
set(handles.text27,'String','Welcome to Music Listening Test');

3 Kommentare

1) 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.
2) If the global variable does not exist the first time you issue the global statement, it is initialized to the empty matrix.
3) 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.
It will be clear with the following example,
Example : 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
Stephen23
Stephen23 am 13 Aug. 2020
Bearbeitet: Stephen23 am 13 Aug. 2020
"Why I have to use this?"
You don't have to.
Using global variables makes accessing variables slow, liable to bugs, and difficult to debug.
The MATLAB documentation lists the recommended ways of passing data within a GUI:
The MATLAB documentation also advises "Use global variables sparingly, if at all."
Epri Pratiwi
Epri Pratiwi am 13 Aug. 2020
nice info!

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Startup and Shutdown finden Sie in Hilfe-Center und File Exchange

Tags

Gefragt:

am 13 Aug. 2020

Kommentiert:

am 13 Aug. 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by