Write function with multiple output, like sort()

1 次查看(过去 30 天)
B = sort(A);
[B, I] = sort(A);
How can I write such a function? Is it as simple as return both B and I, but the first line just uses B and ignore I, or there's some polymorphism trick under the hood?

采纳的回答

Tommy
Tommy 2020-4-28
function [out1, out2, out3] = myfunc
...
end
As an example, this function has 3 outputs. You can call it with
[a, b, c] = myfunc
if you want, or you can use
a = myfunc
to just get out1, or perhaps
[~, b, c] = myfunc
to just get out2 and out3. Inside myfunc, each output simply needs to be assigned a value before the end of the function. Is this what you mean?
  5 个评论
Steven Lord
Steven Lord 2020-4-28
You can't force someone to call your function with the desired number of outputs, but you could encourage then to do so or refuse to cooperate if they don't.
function [B, I] = mysort(A)
if nargout < 2
warning('You really should call mysort with two output arguments')
% or
error('You must call mysort with two output arguments')
end
% Do stuff to compute B and I
end

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by