integration of equation using gui

Hello, I want to find integration of equation using gui. That's my code, why it doesn't work? Please help me and explain in very simple words, I'm at the very beginning of learning matlab.
function calculator
% tworzenie okna GUI
f = figure('Visible','off',...
'Position',[480,500,500,480]);
integration = uicontrol('Style','pushbutton',...
'String','integration',...
'Position',[315,170,70,25],...
'Callback',@integration);
hinput_g = uicontrol('Style','edit',...
'Position',[120, 200,240,40],...
'String','function');
set(f,'Name','Moja aplikacja GUI');
set(f,'Visible','on');
function integration(~,~)
x = get(hinput_g,'String');
x=str2func(x);
syms c
c= int(x)
msgbox(sprintf(c));
end
end

3 Comments

John D'Errico
John D'Errico on 17 Jan 2023
Edited: John D'Errico on 17 Jan 2023
I changed your subject heading to indicate you were integrating using a gui, not a guitar, which would somehow imply you were using a musical instrument to perform an integration. (Yes, I know this kind of typo is almost always a spell checker getting involved.) And while there were strings involved in your code, they would not belong on a guitar. This will cause less confusion in people who will look at your question, or not look as they might think the question was about something completely different.
yes, autocorrect, thanks
Blasted spell checkers. I'll never forgive the old IBM utility, which many years ago, could find only one replacement for what it thought was my mis-spelled name of D'Errico in a document. It wanted to substitute "derelict" for my name.

Sign in to comment.

 Accepted Answer

I can't execute this code in online MATLAB. So we can just look at what happens inside the function caled integration.
First, it extracts a variable named x, as a string from the gui field. Perhaps it was this:
x = 'y^2 + 2';
Next, you use str2func. That is incorrect. You don't want to make it a function handle like this:
x=str2func(x)
That is because int does not use function handles. Instead, what you wanted to do was to use str2sym.
x = str2sym(x)
x = 
This is something that int can now use. As you can see, MATLAB now thinks x is a symbolic expression.
Next, you create a symbolic variable named c. There is no need to do so, since immediately afterwards, you assign the result of int to c. That overwrites anything you did before. So the "syms c" command is wasted. Not important though, except for the CPU cycles thrown in the bit bucket. One day you will care about wasted CPU cycles.
Finally, you use int. That will work now.
c= int(x)
c = 
However, can you use sprintf directly on c? No. However, you can convert c into a character form.
char(c)
ans = '(y*(y^2 + 6))/3'
And you can put that into a string field in a messagebox.

1 Comment

It works! Thank you so much, I get it now!

Sign in to comment.

More Answers (0)

Products

Release

R2022b

Community Treasure Hunt

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

Start Hunting!