2012-10-05 95 views
1

可能重複:
How do I retrieve the names of function parameters in matlab?如何獲得函數參數matlab的

我正在尋找一種方式來獲得傳遞給所有的參數,或者期望我的功能。 args()命令似乎是理想的,但僅適用於過程。有沒有這樣做。

我的理由我想這樣做是因爲我可以做更少的行檢查。即檢查所有輸入是數字寫入一個檢查然後執行所有參數。所以如果有一個很好的選擇,我會接受想法。

感謝

回答

3

您可以使用varargin作爲petrichor提到的。 varargin是細胞,所以你可以在一行中使用cellfun輕鬆地執行所有參數的驗證:

function c = test(varargin) 
cellfun(@(arg)validateattributes(arg, {'numeric'}, {'integer'}), varargin); 

上面的代碼運行validateattributes所有功能參數。在另一方面,如果你想命名的變量,你仍然可以將它們組合成細胞,並運行特定的測試,上面:

function c = test(i1, i2, d1, d2) 

% validate integer arguments 
cellfun(@(arg)validateattributes(arg, {'numeric'}, {'integer'}), {i1, i2}); 

% validate double arguments 
cellfun(@(arg)validateattributes(arg, {'double'}, {'positive'}), {d1, d2}); 
3

你在找什麼是varargin使你的輸入參數數量可變的工作。

+0

我真的不希望可變數量的參數雖然。而且大部分代碼都希望使用命名變量來使其更清晰。我只想要一種方式來完成我的斷言,而不必重複代碼。 – wookie1