idGaussianProcess
Gaussian process regression mapping function for nonlinear ARX and Hammerstein-Wiener models (requires Statistics and Machine Learning Toolbox)
Since R2021b
Description
 An idGaussianProcess object implements a Gaussian process (GP)
      regression model, and is a nonlinear mapping function for estimating nonlinear ARX and
      Hammerstein-Wiener models. This mapping object, which is also referred to as a
        nonlinearity, incorporates RegressionGP (Statistics and Machine Learning Toolbox) objects that the mapping function creates using Statistics and Machine Learning Toolbox™. The mapping object contains three components: an offset, a nonlinear component,
      which, in this case, is the GP kernel, and a linear component that uses a combination of
      linear weights.
The input to the mapping object can be an internal signal of a nonlinear black-box model, such as one of the following signals:
- Vector of the regressors of a nonlinear ARX model 
- Output of the linear block of a Hammerstein-Wiener model 

Mathematically, idGaussianProcess is a function that maps
        m inputs X(t) =
        [x(t1),x2(t),…,xm(t)]T
      to a scalar output y(t) using the following relationship:
Here,
- X(t) is an m-by-1 vector of inputs, or regressors. 
- y0 is the output offset, a scalar. 
- P is an m-by-p projection matrix, where m is the number of regressors and p is the number of linear weights. m must be greater than or equal to p. 
- L is a p-by-1 vector of weights. 
- G(X,θ) is the regressive Gaussian process that constitutes the kernel of the - idGaussianProcessobject. G has a mean of zero and a covariance that the user specifies by choosing a kernel, and can be expressed generally as
A zero-mean Gaussian process G predicts the output Ytest for a given input Xtest using the following relationship:
Here:
- K(Xtest,Xtrain) is the covariance kernel function. 
- Xtrain is a matrix representing the set of training inputs. 
- Xtest is a matrix representing the set of test inputs. 
- Ytrain is the vector of outputs from the training set. 
- σn is the standard deviation of the additive measurement noise. 
Gaussian process modeling is especially useful when you have only limited measurement
      data. For more information about creating GP regression models, see fitrgp (Statistics and Machine Learning Toolbox).
Use idGaussianProcess as the value of the OutputFcn
      property of an idnlarx model or the
        OutputNonlinearity property (but not the
        InputNonlinearity property) of an idnlhw object. For example, specify idGaussianProcess when you
      estimate an idnlarx model with the following
      command.
sys = nlarx(data,regressors,idGaussianProcess)
nlarx estimates the model sys, it essentially estimates the
      parameters of the idGaussianProcess function. You can use a similar approach when you specify input or output linearities using the
        nlhw command. For example, specify idGaussianProcess as an
      output nonlinearity with the following command.
      
sys = nlhw(data,orders,idSaturation,idGaussianProcess)
You can configure the idGaussianProcess function to disable components
      and fix parameters. To omit the linear component, set LinearFcn.Use to
        false. To omit the offset, set Offset.Use to
        false. To specify known values for the linear function and the offset,
      set their Value attributes directly and set the corresponding
        Free attributes to False. To modify the estimation
      options, set the option property in EstimationOptions. For example, to
      change the fit method to 'exact', use
        G.EstimationOptions.FitMethod = 'exact'. Use evaluate to compute the output of the function for a given vector of
      inputs.
Creation
Syntax
Description
G = idGaussianProcessidGaussianProcess object G with the kernel
          function 'SquaredExponential' and default kernel parameters. The number
          of inputs is determined during model estimation and the number of outputs is 1. 
G = idGaussianProcess(kernelFunction)
G = idGaussianProcess(kernelFunction,kernelParameters)kernelParameters. 
G = idGaussianProcess(kernelFunction,kernelParameters,UseLinearFcn)
G = idGaussianProcess(kernelFunction,kernelParameters,UseLinearFcn,UseOffset)
