varargout
可变长度的输出参量列表
描述
varargout
是函数定义语句中的一个输出变量,允许函数返回任意数量的输出参量。使用小写字符指定 varargout
,将其作为最后一个输出参量附加在任何显式声明的输出后。
在执行此函数时,varargout
是一个 1×N 元胞数组,其中 N 是显式声明的输出结果后请求的输出数量。在函数内部,varargout
是一个未初始化且未预分配的变量。
示例
个数不定的函数输出项
在名为 returnVariableNumOutputs.m
的文件中定义一个函数,它返回一个输出大小向量 s
和可变数目的附加输出。
type returnVariableNumOutputs
function [s,varargout] = returnVariableNumOutputs(x) nout = max(nargout,1) - 1; s = size(x); for k = 1:nout varargout{k} = s(k); end end
输出 s
含有输入数组 x
的维数。其他输出项对应于 s
中的个别维数。
使用三维数组调用该函数并请求三个输出。
A = rand(4,5,2); [s,rows,cols] = returnVariableNumOutputs(A)
s = 1×3
4 5 2
rows = 4
cols = 5
使用四维数组再次调用该函数并请求四个输出。这次函数不返回第四维。
A = zeros(1,4,5,2); [s,dim1,dim2,dim3] = returnVariableNumOutputs(A)
s = 1×4
1 4 5 2
dim1 = 1
dim2 = 4
dim3 = 5
对 A
再次调用该函数,并请求一个输出。现在函数返回 A
的维数,而不是 varargout
。
s = returnVariableNumOutputs(A)
s = 1×4
1 4 5 2
可变数目的输入和输出
在名为 variableNumInputAndOutput.m
的文件中定义一个函数,它接受可变数目的输入和输出。
type variableNumInputAndOutput
function varargout = variableNumInputAndOutput(varargin) disp(['Number of provided inputs: ' num2str(length(varargin))]) disp(['Number of requested outputs: ' num2str(nargout)]) for k = 1:nargout varargout{k} = k; end end
使用两个输入和三个输出调用该函数。
[d,g,p] = variableNumInputAndOutput(6,'Nexus')
Number of provided inputs: 2 Number of requested outputs: 3
d = 1
g = 2
p = 3
不使用任何输入和输出再次调用该函数。
variableNumInputAndOutput
Number of provided inputs: 0 Number of requested outputs: 0
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
对于代码生成,要在入口(顶层)函数中使用
varargout
,必须使用codegen -nargout
语法指定输出参数的数目。varargout
的索引必须为编译时常量。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)