. If userdata structure is not
% used, it should return |[]|.
% 
% The following 3 callbacks are used to evaluate the objective function:
%
%     function [f,   userdata] = objfun(x,Y,userdata) 
%     function [df,  userdata] = objgrad(x,Y,userdata) 
%     function [ddf, userdata] = objhess(x,Y,userdata)
%
% which should return: 
%
% * function value of the objective as a scalar |f|, 
% * gradient of the objective as a (possibly sparse) vector |df| 
%   of dimensions |(Nx+NYnnz) x 1|,
% * hess