Matlab 具有可变长度参数列表的匿名函数

Matlab 具有可变长度参数列表的匿名函数,matlab,anonymous-function,Matlab,Anonymous Function,我可以创建一个接受可变数量参数的匿名函数吗 我有一个带有特定字段的结构数组S,例如,bar,我想将所有bar值传递给我的匿名函数foo。由于structS中的元素数量未知,foo必须能够接受数量可变的参数 我能想到的最接近的事情是将单元格数组作为输入参数列表传递: foo({arg1, arg2, arg3, ...}) 我用foo({S.bar})调用它,但它看起来非常笨拙 仅仅为此创建一个特殊的m文件似乎有点过头了。还有其他想法吗? va_arg在matlab中调用,这里是链接的内容 :

我可以创建一个接受可变数量参数的匿名函数吗

我有一个带有特定字段的结构数组
S
,例如,
bar
,我想将所有
bar
值传递给我的匿名函数
foo
。由于struct
S
中的元素数量未知,
foo
必须能够接受数量可变的参数

我能想到的最接近的事情是将单元格数组作为输入参数列表传递:

foo({arg1, arg2, arg3, ...})
我用
foo({S.bar})
调用它,但它看起来非常笨拙

仅仅为此创建一个特殊的m文件似乎有点过头了。还有其他想法吗?

  • va_arg在matlab中调用,这里是链接的内容 :
varargin是函数定义语句中的一个输入变量 允许函数接受任意数量的输入参数


使用
varargin
作为匿名函数的参数,可以传递不同数量的输入

例如:

foo = @(varargin)fprintf('you provided %i arguments\n',length(varargin))
用法


我没有意识到
varagin
可以用在匿名函数中,答案就在我眼前:)就这件事而言,你可以用
nargin
而不是
length(varargin)
:)@EitanT:我意识到我可以用
nargin
,但是我想要一些简单的操作,可以使用
varargin
foo = @(varargin)fprintf('you provided %i arguments\n',length(varargin))
s(1:4) = struct('bar',1);
foo(s.bar)

you provided 4 arguments