How do I access a MATLAB UI function in another .m file?

Technical Source
2 min readNov 8, 2024

--

I am attempting to declutter my MATLAB app code by separating some of the initialization into separate .m files. For this I have set up various files for each type of component (e.g. a file for buttons, graph, etc.). I am attempting to access a function in my master initialize file from the file for buttons. My code goes as follows in the buttons .m file goes as follow:

classdef buttons < handle
methods
%initializes the UI
function buttonCreate(app)

%Create file load 1
app.fileload1 = uibutton(app.gridLayout, 'push');
app.fileload1.FontSize = 36;
app.fileload1.Layout.Row = [8 9];
app.fileload1.Layout.Column = 1;
app.fileload1.Text = 'Load 1';
            %proceeds to create the rest of the buttons
end
end
end

Now I attempt to access the buttonCreate() function in my master initialize file initialize.m:

classdef initialize < handle
properties
fig
gridLayout
axes
        fileload1
end
methods
%initializes the UI
function init(app)
%create canvas
import buttons.*;
fig = uifigure;
fig.Position = [100 100 1920 1080];
movegui(fig,'center');
fig.Name = "Audio Editor";
%Create grid layout
gridLayout = uigridlayout(fig);
gridLayout.ColumnWidth = {'1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x'};
gridLayout.RowHeight = {'1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x', '1x'};
buttonCreate(app); end
end
%code for calling and deleting
methods
%calls code to create canvas upon app start
function app = initialize
init(app)
end
%removes the app and deletes app.fig
function delete(app)
delete(app.fig);
end
end
end
Error in initialize/init (line 41)
buttonCreate(app);
^^^^^^^^^^^^^^^^^^
Error in initialize (line 54)
init(app)
^^^^^^^^^

This resulted in the UIFigure still being created, but with no button and the terminal giving the error given above.

NOTE:-

Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help , Finance Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

Seems like you’re doing some sort of combination of two distinct things:

  1. Use a simple function, which can be in its own .m file or one of the methods of your main class:
% in your initialise class constructor you still have
buttonCreate(app);
% In buttonCreate.m
function buttonCreate(app)
% Create file load 1
app.fileload1 = uibutton(app.gridLayout, 'push');
app.fileload1.FontSize = 36;
app.fileload1.Layout.Row = [8 9];
% ...
end
  1. Use a class to hold references to all of your buttons, in which case the objects you create would be properties of that class, rather than the main app object:

SEE COMPLETE ANSWER CLICK THE LINK

https://www.matlabsolutions.com/resources/how-do-i-access-a-matlab-ui-function-in-another-m-file-.php

https://matlabarticlesworld.blogspot.com/2024/11/how-do-i-access-matlab-ui-function-in.html

--

--

Technical Source
Technical Source

Written by Technical Source

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.

No responses yet