Функция IMREAD определяется как
function [X, map, alpha] = imread(varargin)
В ваших 2 примерах A и X будут одинаковыми, но во втором случае будет дополнительная переменная map
.
В MATLAB есть способ определить вывод переменной, если вы используете VARARGOUT в определении функции:
function varargout = foo(x)
Таким образом, вы можете выводить различные значения в зависимости от некоторых условий в теле функции.
Это глупый пример, но он иллюстрирует концепцию:
function varargout = foo(a,b)
if a>b
varargout{1} = a+b;
varargout{2} = a-b;
else
varargout{1} = a;
varargout{2} = b;
end
Тогда
[x,y] = foo(2,3)
x =
2
y =
3
[x,y] = foo(3,2)
x =
5
y =
1
Выходные аргументы могут быть даже разных типов данных.
Другой пример с условием, основанным на количестве выходных переменных:
function varargout = foo(a,b)
if nargout < 2
varargout{1} = a+b;
else
varargout{1} = a;
varargout{2} = b;
end
Тогда
[x,y] = foo(2,3)
x =
2
y =
3
x = foo(2,3)
x =
5