Użyłem inputParser
obiektu, aby poradzić sobie z ustawieniem domyślnych opcji. Matlab nie zaakceptuje formatu podobnego do Pythona, który podałeś w pytaniu, ale powinieneś być w stanie wywołać funkcję w następujący sposób:
wave(a,b,n,k,T,f,flag,'fTrue',inline('0'))
Po zdefiniowaniu wave
funkcji w ten sposób:
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{:});
Teraz wartości przekazywane do funkcji są dostępne za pośrednictwem i_p.Results
. Nie byłem też pewien, jak sprawdzić, czy przekazany parametr jest w ftrue
rzeczywistości inline
funkcją, więc pozostawiono walidator pusty.
if nargin
), łatwy w utrzymaniu, kompaktowy i elastyczny.