Matlab variable sharing (global variable and such and such…)

Coming from another programming language (Delphi/C#), the one puzzled me about programming in Matlab is how do I share my variable just like I programmed desktop application using Delphi or C#.

After reading the documentation and a lot of forum browsing, finally I made up my mind and conclude my own “best-practice” when I want to share (global) variables in Matlab. (This is applied when we are developing a Matlab GUI via GUIDE).

Sharing variables between functions in one Form/GUI

  • use guidata and handles.

create a global variable that will be known by all functions inside a form/GUI

handles.my_global_var=[1 3 4 2 7]; % just a dummy matrix
guidata(hObject, handles);

recall/access that global variable within other function (still in the same form)


caveat: all global variables is destroyed when you close the Form/GUI


Sharing variables between multiple Forms/GUI but in one application

  • use setappdata and getappdata

create a global variable

setappdata(0, 'my_global_var', the_value);

accessing it

local_var=getappdata(0, 'my_global_var');

checking it (if it’s already set or not)

if (isappdata(0, 'my_global_var'))
    % my_global_var is already set, do something
    % my_global_var isn't there, warn user

deleting it

rmappdata(0, 'my_global_var');

caveat: variables is gone when you close Matlab; you can’t see the variables within Matlab Workspace


The highest level: sharing between multiple Forms/GUI and also with your Matlab Workspace/Command Window

  • use assignin and evalin


assignin('base', 'variable_name', the_value);


local_var=evalin('base', 'variable_name');

See the variables in your Matlab Workspace so you can analyze the variable further (maybe via Variable editor or directly via Command Window)

matlab workspace window

Matlab workspace window showing global variable

caveat: variables is gone when Matlab is closed

If you want to create variables that will not gone even after Matlab closed, you can use save and load command. Checkout Matlab Help page for further documentation about save and load.


  1. Thank You.

    • a simple gui program to show how to use global variable

      function varargout = Global_var_func(varargin)
      % GLOBAL_VAR_FUNC MATLAB code for Global_var_func.fig
      % GLOBAL_VAR_FUNC, by itself, creates a new GLOBAL_VAR_FUNC or raises the existing
      % singleton*.
      % H = GLOBAL_VAR_FUNC returns the handle to a new GLOBAL_VAR_FUNC or the handle to
      % the existing singleton*.
      % GLOBAL_VAR_FUNC(‘CALLBACK’,hObject,event… calls the local
      % function named CALLBACK in GLOBAL_VAR_FUNC.M with the given input arguments.
      % GLOBAL_VAR_FUNC(‘Property’,’Value’,…) creates a new GLOBAL_VAR_FUNC or raises the
      % existing singleton*. Starting from the left, property value pairs are
      % applied to the GUI before Global_var_func_OpeningFcn gets called. An
      % unrecognized property name or invalid value makes property application
      % stop. All inputs are passed to Global_var_func_OpeningFcn via varargin.
      % *See GUI Options on GUIDE’s Tools menu. Choose “GUI allows only one
      % instance to run (singleton)”.

      % Edit the above text to modify the response to help Global_var_func

      % Last Modified by GUIDE v2.5 16-Oct-2014 20:50:13

      % Begin initialization code – DO NOT EDIT
      gui_Singleton = 1;
      gui_State = struct(‘gui_Name’, mfilename, …
      ‘gui_Singleton’, gui_Singleton, …
      ‘gui_OpeningFcn’, @Global_var_func_OpeningFcn, …
      ‘gui_OutputFcn’, @Global_var_func_OutputFcn, …
      ‘gui_LayoutFcn’, [] , …
      ‘gui_Callback’, []);
      if nargin && ischar(varargin{1})
      gui_State.gui_Callback = str2func(varargin{1});

      if nargout
      [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
      gui_mainfcn(gui_State, varargin{:});
      % End initialization code – DO NOT EDIT

      % — Executes just before Global_var_func is made visible.
      function Global_var_func_OpeningFcn(hObject, eventdata, handles, varargin)
      % This function has no output args, see OutputFcn.
      % hObject handle to figure
      % eventdata reserved – to be defined in a future version of MATLAB
      % handles structure with handles and user data (see GUIDATA)
      % varargin command line arguments to Global_var_func (see VARARGIN)

      % Choose default command line output for Global_var_func
      handles.output = hObject;

      global a b;

      % Update handles structure
      guidata(hObject, handles);

      % UIWAIT makes Global_var_func wait for user response (see UIRESUME)
      % uiwait(handles.figure1);

      % — Outputs from this function are returned to the command line.
      function varargout = Global_var_func_OutputFcn(hObject, eventdata, handles)
      % varargout cell array for returning output args (see VARARGOUT);
      % hObject handle to figure
      % eventdata reserved – to be defined in a future version of MATLAB
      % handles structure with handles and user data (see GUIDATA)

      % Get default command line output from handles structure
      varargout{1} = handles.output;

      % — Executes on button press in pushbutton1.
      function pushbutton1_Callback(hObject, eventdata, handles)
      % hObject handle to pushbutton1 (see GCBO)
      % eventdata reserved – to be defined in a future version of MATLAB
      % handles structure with handles and user data (see GUIDATA)
      global a b;

      May help you……………

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>