1 /* 2 * Licensed to the Hipparchus project 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 Hipparchus project 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 * https://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 18 package org.hipparchus.filtering.kalman.linear; 19 20 import org.hipparchus.linear.RealMatrix; 21 import org.hipparchus.linear.RealVector; 22 23 /** 24 * Container for {@link LinearProcess linear process} evolution data. 25 * @see LinearProcess 26 * @since 1.3 27 */ 28 public class LinearEvolution { 29 30 /** State transition matrix A<sub>k-1</sub>. */ 31 private final RealMatrix stateTransitionMatrix; 32 33 /** Control matrix B<sub>k-1</sub> (can be null if the process is not controlled). */ 34 private final RealMatrix controlMatrix; 35 36 /** Command u<sub>k-1</sub>. (can be null if the process is not controlled). */ 37 private final RealVector command; 38 39 /** Process noise matrix Q<sub>k-1</sub>. */ 40 private final RealMatrix processNoiseMatrix; 41 42 /** Jacobian of the measurement with respect to the state (may be null). */ 43 private final RealMatrix measurementJacobian; 44 45 /** Simple constructor. 46 * @param stateTransitionMatrix state transition matrix A<sub>k-1</sub> 47 * @param controlMatrix control matrix B<sub>k-1</sub> (can be null if the process is not controlled) 48 * @param command u<sub>k-1</sub>. (can be null if the process is not controlled) 49 * @param processNoiseMatrix process noise matrix Q<sub>k-1</sub> 50 * @param measurementJacobian Jacobian of the measurement with respect to the state 51 * (may be null if measurement should be ignored) 52 */ 53 public LinearEvolution(final RealMatrix stateTransitionMatrix, 54 final RealMatrix controlMatrix, final RealVector command, 55 final RealMatrix processNoiseMatrix, 56 final RealMatrix measurementJacobian) { 57 this.stateTransitionMatrix = stateTransitionMatrix; 58 this.controlMatrix = controlMatrix; 59 this.command = command; 60 this.processNoiseMatrix = processNoiseMatrix; 61 this.measurementJacobian = measurementJacobian; 62 } 63 64 /** Get the state transition matrix A<sub>k-1</sub>. 65 * @return state transition matrix A<sub>k-1</sub> 66 */ 67 public RealMatrix getStateTransitionMatrix() { 68 return stateTransitionMatrix; 69 } 70 71 /** Get the control matrix B<sub>k-1</sub>. 72 * @return control matrix B<sub>k-1</sub> (can be null if there is no control) 73 */ 74 public RealMatrix getControlMatrix() { 75 return controlMatrix; 76 } 77 78 /** Get the command u<sub>k-1</sub>. 79 * @return command vector u<sub>k-1</sub> (can be null if there is no control) 80 */ 81 public RealVector getCommand() { 82 return command; 83 } 84 85 /** Get the process noise matrix Q<sub>k-1</sub>. 86 * @return process noise matrix<sub>k-1</sub> 87 */ 88 public RealMatrix getProcessNoiseMatrix() { 89 return processNoiseMatrix; 90 } 91 92 /** Get measurement Jacobian. 93 * @return Jacobian of the measurement with respect to the state 94 * (may be null if measurement should be ignored) 95 */ 96 public RealMatrix getMeasurementJacobian() { 97 return measurementJacobian; 98 } 99 100 }