Hey,
Please excuse me if this has a really easy solution but I'm farily new to matlab and coding in general.
So I've been using mlapp2classdef to convert a simple app I made in App Designer just to test if I can end up with a final standalone file that works. The sample is just an axes with a push button that plots cos(x) after it is pushed. After I run the conversion, mlapp2classdef([], 'ReplaceAppUI, true) I get an error saying:
While setting property 'UIAxes' of class 'testclick': Value must be 'matlab.ui.control.UIAxes'. Error in testclick/createComponents (line 39) app.UIAxes = axes(app.UIFigure); Error in testclick (line 79) createComponents(app)
My file name is "testclick". Here is the code that the conversion generates from my sample.
classdef testclick < matlab.apps.AppBase
% Properties that correspond to app components
properties (Access = public)
UIFigure@matlab.ui.Figure
UIAxes@matlab.ui.control.UIAxes
Plot@matlab.ui.control.Button
XEditFieldLabel@matlab.ui.control.Label
XEditField@matlab.ui.control.NumericEditField
YEditFieldLabel@matlab.ui.control.Label
YEditField@matlab.ui.control.NumericEditField
end
methods (Access = private)
% Button pushed function: Plot
function PlotPushed(app, event)
x=0:.01:100;
y=cos(x);
plot(app.UIAxes,x,y);
app.XEditField.Value=10;
app.YEditField.Value=100;
end
end
% App initialization and construction
methods (Access = private)
% Create UIFigure and components
function createComponents(app)
% Create UIFigure
app.UIFigure = figure;
app.UIFigure.Position = [100 100 634 308];
app.UIFigure.Name = 'UI Figure';
setAutoResize(app, app.UIFigure, true)
% Create UIAxes
app.UIAxes = axes(app.UIFigure);
title(app.UIAxes, 'Title');
xlabel(app.UIAxes, 'X');
ylabel(app.UIAxes, 'Y');
app.UIAxes.Position = [259 80 300 185];
% Create Plot
app.Plot = uicontrol('Parent', app.UIFigure, 'push', 'Style', 'pushbutton');
app.Plot.ButtonPushedFcn = createCallbackFcn(app, @PlotPushed, true);
app.Plot.Position = [96 216 100 22];
app.Plot.Text = 'Plot';
% Create XEditFieldLabel
app.XEditFieldLabel = uicontrol('Parent', app.UIFigure, 'Style', 'text');
app.XEditFieldLabel.HorizontalAlignment = 'right';
app.XEditFieldLabel.Position = [56 165 25 15];
app.XEditFieldLabel.Text = 'X';
% Create XEditField
app.XEditField = uicontrol('Parent', app.UIFigure, 'numeric', 'Style', 'edit');
app.XEditField.Position = [96 161 100 22];
% Create YEditFieldLabel
app.YEditFieldLabel = uicontrol('Parent', app.UIFigure, 'Style', 'text');
app.YEditFieldLabel.HorizontalAlignment = 'right';
app.YEditFieldLabel.Position = [57 118 25 15];
app.YEditFieldLabel.Text = 'Y';
% Create YEditField
app.YEditField = uicontrol('Parent', app.UIFigure, 'numeric', 'Style', 'edit');
app.YEditField.Position = [97 114 100 22];
end
end
methods (Access = public)
% Construct app
function app = testclick()
% Create and configure components
createComponents(app)
% Register the app with App Designer
% Function call removed
if nargout == 0
clear app
end
end
% Code that executes before app deletion
function delete(app)
% Delete UIFigure when app is deleted
delete(app.UIFigure)
end
end
end
And lastly here is the code converted just with mlapp2classdef([])
classdef testclick < matlab.apps.AppBase
% Properties that correspond to app components
properties (Access = public)
UIFigure matlab.ui.Figure
UIAxes matlab.ui.control.UIAxes
Plot matlab.ui.control.Button
XEditFieldLabel matlab.ui.control.Label
XEditField matlab.ui.control.NumericEditField
YEditFieldLabel matlab.ui.control.Label
YEditField matlab.ui.control.NumericEditField
end
methods (Access = private)
% Button pushed function: Plot
function PlotPushed(app, event)
x=0:.01:100;
y=cos(x);
plot(app.UIAxes,x,y);
app.XEditField.Value=10;
app.YEditField.Value=100;
end
end
% App initialization and construction
methods (Access = private)
% Create UIFigure and components
function createComponents(app)
% Create UIFigure
app.UIFigure = uifigure;
app.UIFigure.Position = [100 100 634 308];
app.UIFigure.Name = 'UI Figure';
setAutoResize(app, app.UIFigure, true)
% Create UIAxes
app.UIAxes = uiaxes(app.UIFigure);
title(app.UIAxes, 'Title');
xlabel(app.UIAxes, 'X');
ylabel(app.UIAxes, 'Y');
app.UIAxes.Position = [259 80 300 185];
% Create Plot
app.Plot = uibutton(app.UIFigure, 'push');
app.Plot.ButtonPushedFcn = createCallbackFcn(app, @PlotPushed, true);
app.Plot.Position = [96 216 100 22];
app.Plot.Text = 'Plot';
% Create XEditFieldLabel
app.XEditFieldLabel = uilabel(app.UIFigure);
app.XEditFieldLabel.HorizontalAlignment = 'right';
app.XEditFieldLabel.Position = [56 165 25 15];
app.XEditFieldLabel.Text = 'X';
% Create XEditField
app.XEditField = uieditfield(app.UIFigure, 'numeric');
app.XEditField.Position = [96 161 100 22];
% Create YEditFieldLabel
app.YEditFieldLabel = uilabel(app.UIFigure);
app.YEditFieldLabel.HorizontalAlignment = 'right';
app.YEditFieldLabel.Position = [57 118 25 15];
app.YEditFieldLabel.Text = 'Y';
% Create YEditField
app.YEditField = uieditfield(app.UIFigure, 'numeric');
app.YEditField.Position = [97 114 100 22];
end
end
methods (Access = public)
% Construct app
function app = testclick()
% Create and configure components
createComponents(app)
% Register the app with App Designer
registerApp(app, app.UIFigure)
if nargout == 0
clear app
end
end
% Code that executes before app deletion
function delete(app)
% Delete UIFigure when app is deleted
delete(app.UIFigure)
end
end
end
Hey,
Please excuse me if this has a really easy solution but I'm farily new to matlab and coding in general.
So I've been using mlapp2classdef to convert a simple app I made in App Designer just to test if I can end up with a final standalone file that works. The sample is just an axes with a push button that plots cos(x) after it is pushed. After I run the conversion,
mlapp2classdef([], 'ReplaceAppUI, true)I get an error saying:While setting property 'UIAxes' of class 'testclick': Value must be 'matlab.ui.control.UIAxes'. Error in testclick/createComponents (line 39) app.UIAxes = axes(app.UIFigure); Error in testclick (line 79) createComponents(app)My file name is "testclick". Here is the code that the conversion generates from my sample.
And lastly here is the code converted just with
mlapp2classdef([])