C++/java/python系列的語言,函數可以有默認值,通常類似如下的形式:
funtion_name (param1, param2=default_value, ...)
到了matlab下發現並不能這樣寫。那是不是說matlab中希望函數有默認參數,就一定要很麻煩地,使用nargin來輔助實現呢?比如:
% 第三個參數有默認值
function [result]=some_fun(param1, param2)
if (nargin<3)
param3 = 'default_param3_value';
end
...
end
上面這種寫法缺點明顯:如果有多個參數有默認值,那么nargin的判斷語句太多了。
那就試試inputParser。比如:
function [result]=some_fun(varargin)
ip = inputParser;
%接下來設定默認值,還可以指定是必須參數還是可選參數等。
ip.addParamValue('use_gpu', 1);
%其他還有 ip.addParameter(),ip.addRequired()等函數可用
...
%然后將輸入的參數進行處理,如果有不同於默認值的那就覆蓋掉
ip.parse(varargin{:});
result=ip.Results;
end