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

 採用された回答

Star Strider
Star Strider 2018 年 3 月 26 日

0 投票

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 件のコメント

Star Strider
Star Strider 2021 年 7 月 24 日
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
,

サインインしてコメントする。

その他の回答 (1 件)

Stephen23
Stephen23 2018 年 3 月 26 日

1 投票

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 件のコメント

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

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeMATLAB についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by