Varargout - How to realize function call

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

Guillaume
Guillaume 2019 年 10 月 21 日
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.

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

 採用された回答

Stephen23
Stephen23 2019 年 10 月 21 日

0 投票

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

その他の回答 (2 件)

per isakson
per isakson 2019 年 10 月 21 日
編集済み: per isakson 2019 年 10 月 21 日

0 投票

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
Dario Walter
Dario Walter 2019 年 11 月 1 日

0 投票

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

カテゴリ

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

製品

質問済み:

2019 年 10 月 21 日

回答済み:

2019 年 11 月 1 日

Community Treasure Hunt

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

Start Hunting!

Translated by