nargin is by far the easiest way to do this. It is also generally recommended to check the number of input arguments using nargchk :
function e = testFunc(a,b,c,d) error( nargchk(2, 4, nargin, 'struct') ); % set default values if nargin<4, d = 0; end if nargin<3, c = 0; end % .. c = a*b + c*d; end
... which acts as a way of ensuring the correct number of arguments. In this case, a minimum of two arguments is required, a maximum of four.
If nargchk does not detect an error, execution resumes normally, otherwise an error is generated. For example, a call to testFunc(1) generates:
Not enough input arguments.
UPDATE: a new function was introduced in R2011b narginchk , which replaces the use of the deprecated nargchk + error above:
narginchk(2,4);
You can use functions like: exist and isempty to check if a variable exists and is empty:
if ~exist('c','var') || isempty(c) c = 10; end
which allows you to call your function, such as: testFunc(1,2,[],4) it to use the default value for c , but still giving a value for d
You can also use varargin to accept a variable number of arguments.
Finally, a powerful way to parse and validate named inputs is to use inputParser
To see examples and other alternatives for passing arguments and set defaults, check out this post and its comments.