how can a plot a function given by the user in app design?

2 views (last 30 days)
I am developing an application that will allow to graph two imput signals given by the user and then calculate and graph the convolution of these, however, I do not know how I could read the function entered by the user in the text field to be able to graph it, i understand that it reads it as a string and i need to convert it somehow to a expression. I appreciate any help or advice, this is my first time trying app designer so I'm a bit lost.
Here I leave the part of the code where I'm having problems.
% Properties that correspond to app components
properties (Access = public)
UIFigure matlab.ui.Figure % UI Figure
LabelEditField matlab.ui.control.Label % x(t)
FInput matlab.ui.control.EditField % sin(pi*t...
LabelEditField2 matlab.ui.control.Label % h(t)
SInput matlab.ui.control.EditField % t./t
Start matlab.ui.control.Button % Start
xt matlab.ui.control.UIAxes % First Input
yt matlab.ui.control.UIAxes % Second I...
LabelNumericEditField matlab.ui.control.Label % x1
x1range matlab.ui.control.NumericEditField % [-Inf Inf]
Label matlab.ui.control.Label % x2
x2range matlab.ui.control.NumericEditField % [-Inf Inf]
Label2 matlab.ui.control.Label % h1
h1range matlab.ui.control.NumericEditField % [-Inf Inf]
Label3 matlab.ui.control.Label % h2
h2range matlab.ui.control.NumericEditField % [-Inf Inf]
Label4 matlab.ui.control.Label % t1
t1 matlab.ui.control.NumericEditField % [-Inf Inf]
Label5 matlab.ui.control.Label % t2
t2 matlab.ui.control.NumericEditField % [-Inf Inf]
NumericEditField matlab.ui.control.NumericEditField % [-Inf Inf]
end
methods (Access = private)
% Code that executes after component creation
function startupFcn(app)
end
% Start button pushed function
function StartButton(app)
%Initialization
t0 = app.t1.Value;
tf = app.t2.Value;
t = t0:tf; %Time Range
X = zeros(1,length(t)); % First Input signal
x1 = app.x1range.Value;
x2 = app.x2range.Value; % Range of Input Signal
H = zeros(1,length(t)); % Second Input signal
h1 = app.h1range.Value;
h2 = app.h2range.Value; % Range of Second Input Signal
Y = zeros(1,length(t)); % Convolution output
xh1 = x1+h1;
xh2 = x2+h2; % Range of Convolution output
%Input Signals
x = app.FInput.Value;
x(t==0)=1; % Generate First Input (Sinc default)
h = app.SInput.Value;
h(t==0)=1; % Generate Second Input (Impulse Response default)
%H(t>=h1&t<=h2) = h(t>=h1&t<=h2); % Fit First Input signal within range
X(t>=x1&t<=x2) = x(t>=x1&t<=x2); % Fit Second Input within range
%Plot Input Signals
plot(app.xt,t,X,'b')
end
end

Answers (1)

Yongjian Feng
Yongjian Feng on 25 Nov 2021
It seem like all you need is this.

Categories

Find more on App Building in Help Center and File Exchange

Products


Release

R2016a

Community Treasure Hunt

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

Start Hunting!