how do I make the function stop showing output arguments if an invalid input is entered.

2 views (last 30 days)
Eti Rastogi on 28 Sep 2020
Edited: Ameer Hamza on 28 Sep 2020
function [max_h,H_dist]= A09Prob3_baler_erastogi(initial_v,launch_angle)
if ~(initial_v>=9.5 & initial_v<=13.25) %initial velocity limitation [m/s]
fprintf('Initial velocity input is invalid \n')
end
if ~(launch_angle>=30 & launch_angle<=60) % angle limitation [deg]
fprintf('Launch angle input is invalid \n')
end
t= (initial_v*sin(launch_angle))/g; % maximum time [s]
max_h= 1.25+(initial_v*sin(launch_angle)*t)-(0.5*g*t^2); % maximum height in m
H_dist= (initial_v*cos(launch_angle))*t; % horizontal distance in m
end

Ameer Hamza on 28 Sep 2020
Edited: Ameer Hamza on 28 Sep 2020
You can use assert(): https://www.mathworks.com/help/matlab/ref/assert.html. Which will throw an error if invalid input is given
function [max_h,H_dist]= A09Prob3_baler_erastogi(initial_v,launch_angle)
assert((initial_v>=9.5 & initial_v<=13.25), 'Initial velocity input is invalid')
assert((launch_angle>=30 & launch_angle<=60), 'Launch angle input is invalid')
t= (initial_v*sin(launch_angle))/g; % maximum time [s]
max_h= 1.25+(initial_v*sin(launch_angle)*t)-(0.5*g*t^2); % maximum height in m
H_dist= (initial_v*cos(launch_angle))*t; % horizontal distance in m
end
If you don't want to throw an error, then you can simply return, but in that case, you will need to provide values for output variables
function [max_h,H_dist]= A09Prob3_baler_erastogi(initial_v,launch_angle)
max_h = 0;
H_dist = 0;
if ~(initial_v>=9.5 & initial_v<=13.25) %initial velocity limitation [m/s]
fprintf('Initial velocity input is invalid \n');
return
end
if ~(launch_angle>=30 & launch_angle<=60) % angle limitation [deg]
fprintf('Launch angle input is invalid \n')
return
end
t= (initial_v*sin(launch_angle))/g; % maximum time [s]
max_h= 1.25+(initial_v*sin(launch_angle)*t)-(0.5*g*t^2); % maximum height in m
H_dist= (initial_v*cos(launch_angle))*t; % horizontal distance in m
end