View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.math4.legacy.filter;
18  
19  import org.apache.commons.math4.legacy.linear.RealMatrix;
20  import org.apache.commons.math4.legacy.linear.RealVector;
21  
22  /**
23   * Defines the process dynamics model for the use with a {@link KalmanFilter}.
24   *
25   * @since 3.0
26   */
27  public interface ProcessModel {
28      /**
29       * Returns the state transition matrix.
30       *
31       * @return the state transition matrix
32       */
33      RealMatrix getStateTransitionMatrix();
34  
35      /**
36       * Returns the control matrix.
37       *
38       * @return the control matrix
39       */
40      RealMatrix getControlMatrix();
41  
42      /**
43       * Returns the process noise matrix. This method is called by the {@link KalmanFilter} every
44       * prediction step, so implementations of this interface may return a modified process noise
45       * depending on the current iteration step.
46       *
47       * @return the process noise matrix
48       * @see KalmanFilter#predict()
49       * @see KalmanFilter#predict(double[])
50       * @see KalmanFilter#predict(RealVector)
51       */
52      RealMatrix getProcessNoise();
53  
54      /**
55       * Returns the initial state estimation vector.
56       * <p>
57       * <b>Note:</b> if the return value is zero, the Kalman filter will initialize the
58       * state estimation with a zero vector.
59       *
60       * @return the initial state estimation vector
61       */
62      RealVector getInitialStateEstimate();
63  
64      /**
65       * Returns the initial error covariance matrix.
66       * <p>
67       * <b>Note:</b> if the return value is zero, the Kalman filter will initialize the
68       * error covariance with the process noise matrix.
69       *
70       * @return the initial error covariance matrix
71       */
72      RealMatrix getInitialErrorCovariance();
73  }