您可以通过使用
varargout
作为输出变量来更改函数的定义:
编辑
更新了函数的定义,包括对输出数量的检查。
function varargout = square_geom(side)
p = 3;
a = side.^2;
v=[p,a];
switch(nargout)
case 0 disp('No output specified, array [p,a] returned')
varargout{1}=v;
case 1 varargout{1}=v;
case 2 varargout{1}=p;
varargout{2}=a;
case 3 varargout{1}=v;
varargout{2}=p;
varargout{3}=a;
otherwise disp(['Error: too many (' num2str(nargout) ') output specified'])
disp('array [p,a,NaN, NaN ...] returned (NaN for each extra output)')
varargout{1}=v;
varargout{2}=p;
varargout{3}=a;
for i=4:nargout
varargout{i}=NaN
end
end
这使得你可以以多种方式调用你的函数。
square_geom(3)
v=square_geom(3)
[a,b]=square_geom(3)
[a,b,d]=square_geom(3)
[a,b,d,e,f,g]=square_geom(3)
在第一个情况下,你会得到数组
v
作为自动变量
ans
。
square_geom(3)
No output specified, array [p,a] returned
ans =
3 9
在第二种情况下,你会得到数组
v
。
v=square_geom(3)
v =
3 9
在第三种情况下,您会得到这两个变量。
[a,b]=square_geom(3)
a = 3
b = 9
在第四种情况下,您会得到数组
v
和两个单独的变量
a
和
b
。
[v,b,d]=square_geom(3)
v =
3 9
b = 3
d = 9
在后一种情况(指定了太多输出)下,您将得到数组
v
、两个单变量
a
和
b
,以及超出的变量(
e
、
f
和
g
)设置为
NaN
。
[v,b,d,e,f,g]=square_geom(3)
Error: too many (6) output specified
array [p,a,NaN, NaN ...] returned (NaN for each extra output)
v =
3 9
b = 3
d = 9
e = NaN
f = NaN
g = NaN
注意,为了测试代码,我已经修改了函数,将调用
perimeter_square
替换为
3
。
result = [p, a];
呢? - beaker