integration of equation using gui
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Alicja
el 17 de En. de 2023
Comentada: John D'Errico
el 17 de En. de 2023
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 comentarios
John D'Errico
el 17 de En. de 2023
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.
Respuesta aceptada
John D'Errico
el 17 de En. de 2023
Editada: John D'Errico
el 17 de En. de 2023
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)
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)
However, can you use sprintf directly on c? No. However, you can convert c into a character form.
char(c)
And you can put that into a string field in a messagebox.
Más respuestas (0)
Ver también
Categorías
Más información sobre Symbolic Math Toolbox en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!