How to run the function again after a error?
Mostrar comentarios más antiguos
I am having a function where I input a time limit (T_limit) and in the body of the program some independent time(T_7) calculated. I am writing comparing these 2 time varibales, if the T_limit>T_7, function executes normally, but if the T_7 > T_limit, error message thrown and ask user to input a new time(T_limit) and executes the function again with this value. My problem is that, my code stuct in a infinite loop. Is there a way to execute function again with this new variable(T_limit)?
function [motion] = motionPlanning(j_max,a_max,v_max,length,T_limit)
%...
%%% FC2 - Time Violation
if (T7<T_limit) || (T_limit == 0)
disp("### MP - FC2 + Time is not violated (DSP) ###" );
motion.mp_feasibility{1,1} = ["Time Violation ", true];
else
motion.mp_feasibility{1,1} = ["Time Violation ", false];
try
error("### MP - FC2 + Time has been violated (DSP) ###");
catch
disp("### MP - FC2 + Enter new time limit (DSP) ###");
fprintf("New time limit: %d", T_limit);
[motion] = motionPlanning(2,0,0,200,T_limit);
end
end
2 comentarios
Star Strider
el 16 de Mayo de 2021
The problem is that the ‘motionPlanning’ function is calling itself internally. (This is termed ‘recursion’ and is to be avoided.)
Also, the ‘T7’ variable and appraently several others, are not being passed to it. (I have no idea what the structure of the rest of the code is, so if this function is inside another function, it would automatically inherit ‘T7’ from the outer function workspace.)
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Debugging and Analysis en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!