Varargout - How to realize function call

2 ビュー (過去 30 日間)
Dario Walter
Dario Walter 2019 年 10 月 21 日
回答済み: Dario Walter 2019 年 11 月 1 日
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 日
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 日
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 日
Thanks yor your help folks! I thought that a more sophisticated way exists than setting out = [ ]. Anyway, I am happy with that :)

カテゴリ

Help Center および File ExchangeArgument Definitions についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by