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

1 次查看(过去 30 天)
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?

回答(2 个)

Geoff Hayes
Geoff Hayes 2021-4-26
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 个评论
Ashwini  More
Ashwini More 2021-4-26
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 2021-4-26
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()

请先登录,再进行评论。


Image Analyst
Image Analyst 2021-4-26
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.

类别

Help CenterFile Exchange 中查找有关 Interactive Control and Callbacks 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by