MATLAB Answers

0

Varargout - How to realize function call

Asked by Dario Walter on 21 Oct 2019
Latest activity Answered by Dario Walter on 1 Nov 2019
Hey guys,
let us assume the following function:
function [out1,out2,out3]=test(j,k)
out1= nargin;
out2 = j-k;
if out2 == 10
out3 = 5;
end
end
The function call [val1,val2,val3] = test(10,11) returns an error because c is obviously undefined. How do I make this code run so that out3 is returned when it exists?
Thanks for your help!

  1 Comment

Guillaume
on 21 Oct 2019
The function call [val1,val2,val3] = test(10,11)
will always require 3 outputs from the function, so test must always return at least 3 outputs for that call to be valid.
That's independent of whether or not the function only returns some outputs under some conditions.

Sign in to comment.

Products

3 Answers

Answer by Stephen Cobeldick on 21 Oct 2019
 Accepted Answer

Simpler:
function [out1,out2,out3]=test(j,k)
out1= nargin;
out2 = j-k;
out3 = [];
...
if out2 == 10
out3 = 5;
end
end

  0 Comments

Sign in to comment.


Answer by per isakson
on 21 Oct 2019
Edited by per isakson
on 21 Oct 2019

varargout exercise. Try something like this
function varargout = test( j, k )
out1= nargin;
out2 = j-k;
if out2 == 10
out3 = 5;
end
if exist( 'out3', 'var' ) == 1
varargout = { out1, out2, out3 };
else
varargout = { out1, out2, [] };
end
end
or
function varargout = test( j, k )
out1= nargin;
out2 = j-k;
if out2 == 10
out3 = 5;
else
out3 = [];
end
varargout = { out1, out2, out3 };
end

  0 Comments

Sign in to comment.


Answer by Dario Walter on 1 Nov 2019

Thanks yor your help folks! I thought that a more sophisticated way exists than setting out = [ ]. Anyway, I am happy with that :)

  0 Comments

Sign in to comment.