MATLABで可変長の入力引数をもつ関数をつくるときのメモです。
基本的にparse 関数入力の解析のままなのですが、註釈を入れてみました。
入力チェックの関数は状態を検出 is* の関数をベースに作ると良いです。
function s = varaginTest(mustArg, varargin) defaultOpt1 = 20; defaultOpt2 = 'foo'; % char型(文字ベクトル)でないとうまく行かない PossibleOpt2 = {'foo', 'bar', 'baz', 'qux'}; % see RFC3092 p = inputParser; % 入力パーサー・オブジェクトを作成する isValidNum = @(x) isnumeric(x) && isscalar(x) && (x > 1); % 入力チェック用の無名関数 addRequired(p, 'mustArg', isValidNum); % 必須の引数をパーサーに追加 addOptional(p, 'option1', defaultOpt1, isValidNum); % 任意の引数をパーサーに追加 addParameter(p, 'name', defaultOpt2, ... @(x) any(validatestring(x, PossibleOpt2))); parse(p, mustArg, varargin{:}); % ここでparse s = p; end