我有一个需要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}}。我该如何避免呢?有没有更好的方法来实现我想要的?

最佳答案

您需要(或者最好是用当前的实现将varargin扩展为comma-separated list):

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


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

关于matlab - varargin的匿名函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28905996/

10-12 23:54