我可以创建一个接受可变数量的参数的匿名函数?
我有一个结构阵列S
与某一个领域,比如说bar
,我想所有的通bar
值到我的匿名函数foo
。 由于在结构元件的数量S
是未知的, foo
必须能够接受可变数量的参数。
我已经能够拿出被传递一个单元阵列作为输入参数列表最接近的事:
foo({arg1, arg2, arg3, ...})
而我与调用它foo({S.bar})
但看起来很别扭。
创建一个特殊的m文件只是这似乎是矫枉过正。 任何其他的想法?
我可以创建一个接受可变数量的参数的匿名函数?
我有一个结构阵列S
与某一个领域,比如说bar
,我想所有的通bar
值到我的匿名函数foo
。 由于在结构元件的数量S
是未知的, foo
必须能够接受可变数量的参数。
我已经能够拿出被传递一个单元阵列作为输入参数列表最接近的事:
foo({arg1, arg2, arg3, ...})
而我与调用它foo({S.bar})
但看起来很别扭。
创建一个特殊的m文件只是这似乎是矫枉过正。 任何其他的想法?
使用varargin
作为匿名函数的参数,你可以通过一个可变数量的输入。
例如:
foo = @(varargin)fprintf('you provided %i arguments\n',length(varargin))
用法
s(1:4) = struct('bar',1);
foo(s.bar)
you provided 4 arguments
varargin是在函数定义语句,它允许该函数接受任何数量的输入参数的输入变量。
function varlist(varargin)
fprintf('Number of arguments: %d\n',nargin);
celldisp(varargin)
varlist(ones(3),'some text',pi)
Number of arguments: 3
varargin{1} =
1 1 1
1 1 1
1 1 1
varargin{2} =
some text
varargin{3} =
3.1416