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
。由于structS
中的元素数量未知,foo
必须能够接受数量可变的参数
我能想到的最接近的事情是将单元格数组作为输入参数列表传递:
foo({arg1, arg2, arg3, ...})
我用foo({S.bar})
调用它,但它看起来非常笨拙
仅仅为此创建一个特殊的m文件似乎有点过头了。还有其他想法吗?- va_arg在matlab中调用,这里是链接的内容 :
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