MATLAB: 可変長の入力引数を持つ関数のひな形

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

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください