2012-10-17 63 views
11

我发现自己试图将自定义类与内置函数进行接口,并且我遇到了只能用eval解决的情况,我想要一种“更干净”的方式。函数调用变量输出数

基本上,内建函数定义为varargout=blabla(varargin) 我在自定义类中定义了一个重写函数,如varargout=blabla(varargin)。该函数的样子:

function varargout=blabla(varargin) 
    varargout=blabla(function_of_varargin) 
end 

varargin功能从自定义类的内置CLAS其转换。

但它不起作用:基本上,在重写函数内部调用内置函数时,即使自定义重写函数被多个输出参数调用,它也只能看到一个输出参数(varargout) 。

我解决了它的基本调用此:

[varargout{1},varargout{2},...,varargout{nargout}]=blabla(function_of_varargin) 

与环和EVAL-ING构建LHS。

+1

看看[如何重载内置的MATLAB函数?](http://www.mathworks.nl/support/solutions/en/data/1-18T0R/index.html?product=ML&solution= 1-18T0R) –

回答

7

你有没有尝试过这样的:

[varargout{1:nargout}] = blabla(varargin{:}) 

+0

那么,你知道什么时候,当matlab知识枯竭时,总有一些神奇的语法来使它工作。它完美的工作,谢谢 – rienafairefr

+0

+1好抓:)这不限于类和成员函数。适用于普通功能。 – angainor

+0

@angainor:是的。单元阵列扩展应用于单元阵列'varargin'和'varargout' - 它经常被忽略。他们真的只是普通的单元阵列:) –