My function is only giving me one output

function[BeamWeightN,BeamWeightN_X,FB_X,FB_Y,FA_Y,ErrStatus]=BeamReactions(BeamLength,BeamMass,Load,LoadX,LoadAngle)
%fprintf("check to make sure that BeamLength is in meters,BeamMass is in Kg/m, Load is in Newotns,LOadX is in meters, LoadAngle is in degrees CCW")
%BeamLength = 16; % meters
%BeamMass = 45; % Kg/m
%Load = 4800; % Newton
%LoadX = 3; % Location of Load in meters from Roller Support
%LoadAngle = 135; % CCW angle in Degrees
a=isnumeric(BeamLength);
b=isnumeric(BeamMass);
c=isnumeric(Load);
d=isnumeric(LoadX);
e=isnumeric(LoadAngle);
if a==1 && b==1 && c==1 && d==1 && e==1
BeamWeightN=BeamMass*BeamLength*9.81
BeamWeightN_X=BeamLength/2
FB_X=Load*(cosd(LoadAngle))
FB_Y=(LoadX*(Load*(sind(LoadAngle)))+(BeamLength/2)*BeamWeightN)/BeamLength
FA_Y=(Load*(sind(LoadAngle)))+BeamWeightN-FB_Y
else
ErrStatus=1;
fprintf("you have inputed a nonscalar value");
end
end
it keeps returning "ans= 7.0632e+03"
thank you

 Réponse acceptée

Star Strider
Star Strider le 26 Mar 2018
If you call it as:
Y = BeamReactions(BeamLength,BeamMass,Load,LoadX,LoadAngle)
it will only return the first output.
If you call it as:
[BeamWeightN,BeamWeightN_X,FB_X,FB_Y,FA_Y,ErrStatus] =BeamReactions(BeamLength,BeamMass,Load,LoadX,LoadAngle)
it will return all of them.

1 commentaire

is there anywhay to force it to input all outputs without calling them? just with the function's name
One option would be to put all of them in a cell array or structure, then return that one result as the output (given the default variable name ‘ans’).
The cell array approach would go something like this —
x = pi/3;
fcn(x)
ans = 3×1 cell array
{[0.8660]} {[0.5000]} {[1.7321]}
function out = fcn(x)
out{1,:} = sin(x);
out{2,:} = cos(x);
out{3,:} = tan(x);
end
,

Connectez-vous pour commenter.

Plus de réponses (1)

Stephen23
Stephen23 le 26 Mar 2018
Make sure that you call it with the correct number of output arguments, e.g.:
[BeamWeightN,BeamWeightN_X,FB_X,FB_Y,FA_Y,ErrStatus] = BeamReactions(...)

1 commentaire

Welid Benchouche
Welid Benchouche le 24 Juil 2021
is there anywhay to force it to input all outputs without calling them? just with the function's name

Connectez-vous pour commenter.

Catégories

En savoir plus sur MATLAB dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by