You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: DN_SimpleFit.m
    path of file: ./repos/hctsa/Operations
    
    the code of the file until where you have to start completion: function out = DN_SimpleFit(x,dmodel,numBins)
% DN_SimpleFit  Fit distributions or simple time-series models to the data.
%
% Uses the 'fit' function from Matlab's Curve Fitting Toolbox.
%
% The distribution of time-series values is estimated using either a
% kernel-smoothed density via the Matlab function ksdensity with the default
% width parameter, or by a histogram with a specified number of bins, numBins.
%
%---INPUTS:
% x, the input time series
%
% dmodel, the model to fit:
%       (I) distribution models:
%           (i) 'gauss1'
%           (ii) 'gauss2'
%           (iii) 'exp1'
%           (iv) 'power1'
%       (II) simple time-series models:
%           (i) 'sin1'
%           (ii) 'sin2'
%           (iii) 'sin3'
%           (iv) 'fourier1'
%           (v) 'fourier2'
%           (vi) 'fourier3'
%
% numBins, the number of bins for a histogram-estimate of the distribution of
%       time-series values. If numBins = 0, uses ksdensity instead of histogram.

    
function out = DN_SimpleFit(x,dmodel,numBins)
% DN_SimpleFit  Fit distributions or simple time-series models to the data.
%
% Uses the 'fit' function from Matlab's Curve Fitting Toolbox.
%
% The distribution of time-series values is estimated using either a
% kernel-smoothed density via the Matlab function ksdensity with the default
% width parameter, or by a histogram with a specified number of bins, numBins.
%
%---INPUTS:
% x, the input time series
%
% dmodel, the model to fit:
%       (I) distribution models:
%           (i) 'gauss1'
%           (ii) 'gauss2'
%           (iii) 'exp1'
%           (iv) 'power1'
%       (II) simple time-series models:
%           (i) 'sin1'
%           (ii) 'sin2'
%           (iii) 'sin3'
%           (iv) 'fourier1'
%           (v) 'fourier2'
%           (vi) 'fourier3'
%
% numBins, the number of bins for a histogram-estimate of the distribution of
%       time-series values. If numBins = 0, uses ksdensity instead of histogram.
%
%---OUTPUTS: the goodness of fifit, R^2, rootmean square error, the
% autocorrelation of the residuals, and a runs test on the residuals.

% ------------------------------------------------------------------------------
% Copyright (C) 2020, Ben D. Fulcher <ben.d.fulcher@gmail.com>,
% <http://www.benfulcher.com>
%
% If you use this code for your research, please cite the following two papers:
%
% (1) B.D. Fulcher and N.S. Jones, "hctsa: A Computational Framework for Automated
% Time-Series Phenotyping Using Massive Feature Extraction, Cell Systems 5: 527 (2017).
% DOI: 10.1016/j.cels.2017.10.001
%
% (2) B.D. Fulcher, M.A. Little, N.S. Jones, "Highly comparative time-series
% analysis: the empirical structure of time series and their methods",
% J. Roy. Soc. Interface 10(83) 20130048 (2013).
% DOI: 10.1098/rsif.2013.0048
%
% This function is free software: you can redistribute it and/or modify it under
% the terms of the GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option) any later
% version.
%
% This program is distributed in the hope that it will be useful, but WITHOUT
% ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
% FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
% details.
%
% You should have received a copy of the GNU General Public License along with
% this program. If not, see <http://www.gnu.org/licenses/>.
% ------------------------------------------------------------------------------

% ------------------------------------------------------------------------------
% Preliminaries
% ------------------------------------------------------------------------------

% Check a curve-fitting toolbox license is available:
BF_CheckToolbox('curve_fitting_toolbox');

% ------------------------------------------------------------------------------
%% Fit the model
% ------------------------------------------------------------------------------
% Two cases: distribution fits and fits on the data
distModels = {'gauss1','gauss2','exp1','power1'}; % valid distribution models
TSmodels = {'sin1','sin2','sin3','fourier1','fourier2','fourier3'}; % valid time-series models

if any(strcmp(distModels,dmodel)) % valid DISTRIBUTION model name
    if nargin < 3 || isempty(numBins) % haven't specified numBins
        numBins = 'sqrt'; % use sqrt of number of data points
    end