使用varargin的匿名函数

时间:2015-03-06 19:14:19

标签: matlab anonymous-function handle variadic-functions

我有一个功能需要3个强制输入和1个可选:

 f(A, B, C, X)

我想以这种方式使用匿名函数

h = @(X)f(A,B,C,X)

已经定义了A, B, C,因此我可以调用h(1),代码运行f(A,B,C,1)h()运行f(A,B,C) 。 我能够做到的唯一方法(如果我错了,请纠正我)正在使用varargin。我定义了

f(A,B,C,varargin)

并使用

h = @(varargin)f(A,B,C,varargin)

问题在于,当我直接调用f(A,B,C,1)时,在函数内部varargin = {1}。如果我拨打h(1),我就会varargin = {{1}}。我怎么能避免这种情况?有没有更好的方法来实现我想要的东西?

1 个答案:

答案 0 :(得分:5)

您需要(或者更确切地说,最好)将varargin扩展为comma-separated list并使用您当前的实现:

h = @(varargin)f(A,B,C,varargin{:})

是否有更好的方法的问题取决于问题的具体细节。

相关问题