Can I supress an 'ans' output without making a void function?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Charles Denis
am 22 Sep. 2014
Kommentiert: Guillaume
am 22 Sep. 2014
function[ Hours Minutes Seconds Message ] = TimeConversion(TotalSeconds);
Hours = floor(TotalSeconds/3600);
Minutes = floor((TotalSeconds-(Hours*3600))/60);
Seconds = TotalSeconds-Hours*3600-Minutes*60;
Message = [num2str(TotalSeconds) ' Second(s) is equal to '... num2str(Hours) ' hour(s), ' ... num2str(Minutes) ' minute(s), and ' ... num2str(Seconds) ' second(s).'];
disp(Message);
end
When I Run this code:
>> TimeConversion(51624)
51624 Second(s) is equal to 14 hour(s), 20 minute(s), and 24 second(s).
ans =
14
Is there a way to suppress the ans?(which is obviously referencing 'Hours'), but keep the array in the function output for things such as: "[out1, out3] = TimeConversion(82000)"
0 Kommentare
Akzeptierte Antwort
Guillaume
am 22 Sep. 2014
Yes, test to see if nargout is 0 and if it is don't assign anything to any of the outputs. You'll have to rejig your code to use temporary variables for hours, minute, seconds and message:
function [Hours, Minutes, Seconds, Message] = TimeConversion(TotalSeconds);
h = floor(TotalSeconds/3600);
m = floor((TotalSeconds-(Hours*3600))/60);
s = TotalSeconds-Hours*3600-Minutes*60;
msg = sprintf('%d Seconds is equal to %d hour(s), %d minute(s), and %d second(s).', TotalSeconds, h, m, s);
disp(msg);
if nargout > 0
Hours = h;
Minutes = m;
Seconds = s;
Message = msg;
end
end
3 Kommentare
José-Luis
am 22 Sep. 2014
Not so sure about that. The "standard" way, if there is such a thing, would be to use a semi-colon. Here, you are just introducing unnecessary overheads, IMO.
Guillaume
am 22 Sep. 2014
matlab does something similar in one of their function. Can't remember which one.
Personally, I would avoid changing the behaviour of the function based on the number of output, so I wouldn't use this construct.
Weitere Antworten (1)
A Jenkins
am 22 Sep. 2014
Use a semicolon.
TimeConversion(51624);
or
[out1, out3] = TimeConversion(82000);
0 Kommentare
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!