What is the meaning of "global" in matlab GUI?
Show older comments
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 Comments
Sankirna D. Joge
on 13 Aug 2020
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
"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
on 13 Aug 2020
Answers (0)
Categories
Find more on Startup and Shutdown in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!