2012-10-17 101 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' - 它經常被忽略。他們真的只是普通的單元陣列:) –