2013-02-12 23 views
1

我想驗證輸入參數與inputparser,其中輸入參數有2 required inputsvararginmatlab inputparser

function = myfun(input1,input2,varargin) 
    p = inputParser; 
    addRequired(p,'input1',@(x) any(validatestring(x,{'sum','sub'}))) 
    addRequired(p,'input2',@ischar) 

    parse(p,input1,input2,varargin{:}) ?? 

我如何可以驗證varargin在我的varargin是可變長度。

喜歡:myfun('sum','hallo','Name','address',...)

+1

這是行不通的嗎?它會說第一個無效的(例如非目標字符串)與任何有效參數都不匹配。你想要發生什麼?忽略無效的? – alrikai 2013-02-12 21:21:01

回答

0

如果(且僅當)您的變量輸入參數需要的參數值對的形式,你可以這樣做:

function result = myfun(varargin) 
    p = inputParser; 
    p.addRequired('input1', @validation1); 
    p.addRquuired('input2', @validation2); 
    p.KeepUnmatched = true; 
    p.parse(varargin{:}); 
    params = p.Unmatched; 
end 

否則,你被卡住手動解析輸入,恐怕:

function result = myfun(input1, input2, varargin) 
    p = inputParser; 
    p.addRequired('input1', @validation1); 
    p.addRquuired('input2', @validation2); 
    p.parse(input1, input2); 

    for item in varargin: 
     % MANUAL VALIDATION GOES HERE 
    end 

end