Package wsh.opt

Class LinearTransformWrapper

  • All Implemented Interfaces:
    Transform

    public class LinearTransformWrapper
    extends java.lang.Object
    implements Transform
    Wrap a LinearTransform as a non-linear Transform, by ignoring reference model.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addTranspose​(VectConst data, Vect model, VectConst modelReference)
      The transpose of the linearized approximation of the forward transform for a small perturbation (model) to a reference model (modelReference): model = F' data.
      void adjustRobustErrors​(Vect dataError)
      Apply any robust trimming of outliers, or scale all errors for an approximate L1 norm when squared.
      void forwardLinearized​(Vect data, VectConst model, VectConst modelReference)
      A linearized approximation of the forward transform for a small perturbation (model) to a reference model (modelReference).
      void forwardNonlinear​(Vect data, VectConst model)
      Non-linear transform: data = f(model).
      void inverseHessian​(Vect model, VectConst modelReference)
      To speed convergence multiple a model by an approximate inverse Hessian.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • LinearTransformWrapper

        public LinearTransformWrapper​(LinearTransform linearTransform)
        Constructor.
        Parameters:
        linearTransform - Wrap this as a general Transform
    • Method Detail

      • forwardNonlinear

        public void forwardNonlinear​(Vect data,
                                     VectConst model)
        Description copied from interface: Transform
        Non-linear transform: data = f(model).
        Specified by:
        forwardNonlinear in interface Transform
        Parameters:
        data - Output. Initial values are ignored.
        model - Input. Unchanged.
      • forwardLinearized

        public void forwardLinearized​(Vect data,
                                      VectConst model,
                                      VectConst modelReference)
        Description copied from interface: Transform
        A linearized approximation of the forward transform for a small perturbation (model) to a reference model (modelReference). The output data must be a linear function of the model perturbation. Linearized transform: data = F model ~= f(model + modelReference) - f(modelReference) [Do not add results to the existing model.]
        Specified by:
        forwardLinearized in interface Transform
        Parameters:
        data - Output. Initial values are ignored.
        model - Perturbation to reference model.
        modelReference - The reference model for the linearized operator.
      • addTranspose

        public void addTranspose​(VectConst data,
                                 Vect model,
                                 VectConst modelReference)
        Description copied from interface: Transform
        The transpose of the linearized approximation of the forward transform for a small perturbation (model) to a reference model (modelReference): model = F' data. Add the result to the existing model. [This transpose assumes a simple dot product, without the inverse covariance. I.e. data'F model = F' data model, for any arbitrary data or model.]
        Specified by:
        addTranspose in interface Transform
        Parameters:
        data - Input for transpose operation.
        model - Output. The transpose will be added to this vector.
        modelReference - The reference model for the linearized operator.
      • inverseHessian

        public void inverseHessian​(Vect model,
                                   VectConst modelReference)
        Description copied from interface: Transform
        To speed convergence multiple a model by an approximate inverse Hessian. An empty implementation is equivalent to an identity and is also okay. The Hessian is equivalent to multiplying once by the linearized forward operation and then by the transpose. Your approximate inverse can greatly speed convergence by trying to diagonalize this Hessian, or at least balancing the diagonal. If this operation depends only on the model, then you may prefer to implement Vect.postCondition() on the model.
        Specified by:
        inverseHessian in interface Transform
        Parameters:
        model - The model to be multiplied.
        modelReference - The reference model for the linearized operators.
      • adjustRobustErrors

        public void adjustRobustErrors​(Vect dataError)
        Description copied from interface: Transform
        Apply any robust trimming of outliers, or scale all errors for an approximate L1 norm when squared. This method should do nothing if you want a standard least-squares solution. Do not change the overall variance of the errors more than necessary.
        Specified by:
        adjustRobustErrors in interface Transform
        Parameters:
        dataError - This is the original data minus the modeled data.