Borrar filtros
Borrar filtros

User input to repeat a script

3 visualizaciones (últimos 30 días)
Matthew
Matthew el 11 de Oct. de 2023
Editada: Image Analyst el 11 de Oct. de 2023
trying to give users the ability to re-run a program with the following
while(1)
%%code
m = input('Enter Y to start over. Enter Quiz to move on to the Quiz: ','s');
if m==['Quiz']
break
end
end
next section of code is the quiz
This loop for some reason makes certain graphs not get displayed, and for the program to not run right. the code in the middle is like 200 lines, and runs perfect without the whileloop.
any suggestions on how i could alternatively accomplish this same task of giving the user the ability to start the script from the start again?

Respuestas (3)

Walter Roberson
Walter Roberson el 11 de Oct. de 2023
if strcmp(m, 'Quiz')
Remember that in MATLAB, characters with ' around them forms a character vector. 'Quiz' is, for many purposes in MATLAB, the same as uint16([81 117 105 122])
  6 comentarios
Dyuman Joshi
Dyuman Joshi el 11 de Oct. de 2023
It would be better if you could share the relevant code.
Matthew
Matthew el 11 de Oct. de 2023
lets use this code as an example
while(1)
z = linspace(0,4*pi,100);
r = 2*sin(z);
plot(z,r)
xlabel('z')
ylabel('2sin(r)')
title('Plot of the Sine Function')
x = linspace(0,2*pi,100);
y = sin(x);
plot(x,y)
xlabel('x')
ylabel('sin(x)')
title('Plot of the Sine Function')
m = input('Enter Y to start over. Enter Quiz to move on to the Quiz: ','s');
if m==['Quiz']
break
end
end
only the first graph is being displayed, i want both to be displayed, with the ability to restart the program

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 11 de Oct. de 2023
When you call "high level plotting commands" such as plot() or contour() or imshow() then by default they clear the current axes before drawing. You can use "hold on" to prevent that
  1 comentario
Matthew
Matthew el 11 de Oct. de 2023
Editada: Matthew el 11 de Oct. de 2023
i figured it out. i added
figure after every plot
then close all if the loop was selected

Iniciar sesión para comentar.


Image Analyst
Image Analyst el 11 de Oct. de 2023
Editada: Image Analyst el 11 de Oct. de 2023
while (1)
% Put script code here.
% Now ask use if they want to do it again.
promptMessage = sprintf('Do you want to run it again,\nor Quit processing?');
titleBarCaption = 'Continue?';
buttonText = questdlg(promptMessage, titleBarCaption, 'Continue', 'Quit', 'Continue');
if contains(buttonText, 'Quit', 'IgnoreCase', true)
return; % or break.
end
end

Categorías

Más información sobre Loops and Conditional Statements 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!

Translated by