我有一个需要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/