inputParser
オブジェクトを使用して、デフォルトオプションの設定を処理しました。Matlabは質問で指定したpythonのような形式を受け入れませんが、次のような関数を呼び出すことができるはずです。
wave(a,b,n,k,T,f,flag,'fTrue',inline('0'))
wave
このように関数を定義した後:
function wave(a,b,n,k,T,f,flag,varargin)
i_p = inputParser;
i_p.FunctionName = 'WAVE';
i_p.addRequired('a',@isnumeric);
i_p.addRequired('b',@isnumeric);
i_p.addRequired('n',@isnumeric);
i_p.addRequired('k',@isnumeric);
i_p.addRequired('T',@isnumeric);
i_p.addRequired('f',@isnumeric);
i_p.addRequired('flag',@isnumeric);
i_p.addOptional('ftrue',inline('0'),1);
i_p.parse(a,b,n,k,T,f,flag,varargin{:});
これで、関数に渡された値はを介して利用できますi_p.Results
。また、渡されたパラメーターftrue
が実際にinline
関数であることを検証する方法がわからなかったため、バリデーターを空白のままにしました。
if nargin
文言を含む)、保守が容易で、コンパクトで、柔軟性があります。