Note that your code will be simpler and more robust when data is passed between functions, e.g. as input/output arguments, nested functions, or using guidata. Magically accessing variable in other workspace is always slow, complex, and liable to bugs. Read this to know more:
(App Designer) Dropdown menu detect variables in workspace.
    14 views (last 30 days)
  
       Show older comments
    
    Saiful Adham Shukor
 on 23 Apr 2018
  
    
    
    
    
    Commented: Ameer Hamza Khan
 on 22 Feb 2019
            I'm try to familiar myself with apps designer. How to create a dropdown menu with the list of variables in workspace. so, user only choose their selected variable/dataset.
Accepted Answer
  Ameer Hamza
      
      
 on 24 Apr 2018
        Yes, it is possible. Here is one way. Add a drop-down menu to the app. In the COMPONENT BROWSER right-click app.UIFigure and add a startupFcn callback for figure object. You can define the newly created function like this
function startupFcn(app)
  vars = evalin('base', 'whos');
  cell_array = cell(size(vars));
  for i=1:length(vars)
    cell_array{i} = vars(i).name;
  end
  app.DropDown.Items = cell_array;
end
where DropDown is the name of your drop-down menu. Now start the app, the drop-down menu will enlist all the variables from the workspace.
2 Comments
More Answers (3)
  Abdelmalek Benaimeur
 on 21 Feb 2019
        i tried the method you gave us and it worked, but the problem i found is when i open the app i've made, and when i add a new matrix in the workspace it doesn't show up automatically in the dropdown menu until i close the app and re-open it again
is there a way to solve this problem please?
1 Comment
  Ameer Hamza Khan
 on 22 Feb 2019
				One way is to use timer callback. You can use a timer to automatically update the menu at regular (say after every 1 second). Instead of writing my code in startupFcn() you can create a new function inside your app, paste this code in it and assign that function to a timer as callback.
  Abdelmalek Benaimeur
 on 22 Feb 2019
        please could you show me how, beacause i'm new to appdesigner and i didnt' figure out how to do it
1 Comment
  Ameer Hamza Khan
 on 22 Feb 2019
				The attached file contain an example code. In summary i created a property and a callback function.
properties (Access = private)
    menu_timer % Description
end
methods (Access = private)
    function update_menu(app, ~, ~)
        vars = evalin('base', 'whos');
        cell_array = cell(size(vars));
        for i=1:length(vars)
            cell_array{i} = vars(i).name;
        end
        app.DropDown.Items = cell_array;
    end
end
and added following figure startup and close functions:
function startupFcn(app)
    app.menu_timer = timer('ExecutionMode', 'fixedRate', ...
        'Period', 1, ...
        'TimerFcn', @app.update_menu);
    start(app.menu_timer);
end
% Close request function: UIFigure
function UIFigureCloseRequest(app, event)
    stop(app.menu_timer);
    delete(app.menu_timer);
    delete(app)
end
See Also
Categories
				Find more on Develop Apps Using App Designer 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!



