A = imread(filename, fmt)
[X, map] = imread(...)
上面是
imread
的摘要部分,这似乎表明MATLAB函数的返回值取决于调用它的方式?真的吗? 最佳答案
IMREAD函数定义为
function [X, map, alpha] = imread(varargin)
在您的两个示例中,A和X相同,但是在第二种情况下,将存在其他变量
map
。如果在函数定义中使用VARARGOUT,则MATLAB中有一种方法可以定义变量输出:
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