使用 varargin 的匿名函数

Anonymous functions with varargin

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

 f(A, B, C, X)

我想这样使用匿名函数

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

其中 A, B, C 已经被定义,所以我可以调用 h(1) 和代码 运行s 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}}。我怎样才能避免这种情况?有没有更好的方法来实现我想要的?

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

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

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