while creating figure based app in MATLAB, how to give callback to another matlab code?

1 view (last 30 days)
I am working on to create figure based app, standalone application in MATLAB for plotting graphs from load data.
let me give brief explanation of my work,
There are two push buttons, 'Load data' and 'Plot data' from where I can load data and then it will plot the data in given location like shown in figure.
I have matlab code ready which imports data from excel file and then it plot the data. here my question is Can I callback this matlab code to push buttons and plot the data in GUI?
and if we cannot callback matlab code then how can import all data with 'Load data' push button?

Answers (2)

Geoff Hayes
Geoff Hayes on 26 Apr 2021
Ashwini - yes, you should be able to use your other MATLAB code depending upon how it is written. You will want it to be a function so that you can pass in the data and/or filename (of the data to import) and pass in the axes handle where you want to plot the data.
  2 Comments
Ashwini  More
Ashwini More on 26 Apr 2021
Thank you @Geoff Hayes,
I got what you are trying to say but can you please give demo as it is giving error as I am missing something.
I have attached my script that I have completed till the moment.
  1. To load the data I want to load this Loaddata .m file but it is giving error as "Too many output arguments."
function Loaddata
filename = 'Power Calculations 37T.xlsx';sheet = 3;xlRange = 'A7:A33';
Engine_Speed = xlsread(filename,sheet,xlRange);
filename = 'Power Calculations 37T.xlsx';sheet = 3;xlRange = 'B7:B33';
Engine_Power_ON = xlsread(filename,sheet,xlRange);
filename = 'Power Calculations 37T.xlsx';sheet = 3;xlRange = 'C7:C33';
Engine_Power_OFF = xlsread(filename,sheet,xlRange);
filename = 'Power Calculations 37T.xlsx';sheet = 3;xlRange = 'D7:D33';
Gear_One= xlsread(filename,sheet,xlRange);
filename = 'Power Calculations 37T.xlsx';sheet = 3;xlRange = 'E7:E33';
Gear_Two= xlsread(filename,sheet,xlRange);
filename = 'Power Calculations 37T.xlsx';sheet = 3;xlRange = 'F7:F33';
end
2. To plot the data I want to plot
function PlotData
plot(Gear_One,Engine_Power_OFF,'Linewidth',2,'color','k')
hold on
plot(Gear_One,Engine_Power_ON,'Linewidth',2,'color','b')
hold on
plot(Gear_Two,Engine_Power_OFF,'Linewidth',2,'color','k')
hold on
plot(Gear_Two,Engine_Power_ON,'Linewidth',2,'color','b')
hold off
end
How script will change to import and plot this data with callback function in main script?
I look forward to hearing from you.
Image Analyst
Image Analyst on 26 Apr 2021
For 1., how are you calling it? Evidently you're doing something like
[Engine_Speed, Engine_Power_ON, Engine_Power_OFF, Gear_One, Gear_Two] = LoadData();
If you do that you need to define output arguments:
function [Engine_Speed, Engine_Power_ON, Engine_Power_OFF, Gear_One, Gear_Two] = LoadData()

Sign in to comment.


Image Analyst
Image Analyst on 26 Apr 2021
Your pushbutton callback can call other functions. Just make sure the function is in the mlapp or .m file, or on the search path, or in the same folder as your app. It should work then.

Categories

Find more on Interactive Control and Callbacks 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!