public class StateCovarianceMatrixProvider extends Object implements AdditionalStateProvider
此额外状态提供者允许基于用户定义的输入状态协方差矩阵计算传播的协方差矩阵。传播的协方差矩阵的计算使用传播的航天器状态和初始状态之间的状态转移矩阵。因此,用户必须定义提供者的名称用于状态转移矩阵的名称
。
由于状态转移矩阵和输入状态协方差矩阵可以用不同的轨道类型表示,因此在构建协方差提供者时,用户必须指定两种轨道类型。此外,还必须指定两个矩阵中使用的位置角。
为了将此额外状态提供者添加到轨道传播器中,用户必须使用Propagator.addAdditionalStateProvider(AdditionalStateProvider)
方法。
对于给定的传播的航天器state
,通过方法getStateCovariance(SpacecraftState)
可以访问传播的状态协方差矩阵。
Constructor and Description |
---|
StateCovarianceMatrixProvider(String additionalName, String stmName, MatricesHarvester harvester, StateCovariance covInit)
构造函数。
|
Modifier and Type | Method and Description |
---|---|
double[] |
getAdditionalState(SpacecraftState state)
获取额外状态。
|
OrbitType |
getCovarianceOrbitType()
获取协方差矩阵所表示的轨道类型。
|
String |
getName()
获取额外状态的名称。
|
StateCovariance |
getStateCovariance(SpacecraftState state)
获取与初始协方差相同的帧/局部轨道帧、轨道类型和位置角中的状态协方差。
|
StateCovariance |
getStateCovariance(SpacecraftState state, Frame frame)
获取在给定帧中表示的状态协方差。
|
StateCovariance |
getStateCovariance(SpacecraftState state, OrbitType orbitType, PositionAngleType angleType)
获取在给定轨道类型中表示的状态协方差。
|
void |
init(SpacecraftState initialState, AbsoluteDate target)
在传播开始时初始化额外状态提供者。
|
boolean |
yields(SpacecraftState state)
检查此提供者是否应该放弃,以便另一个提供者有机会添加缺失的部分。
|
public StateCovarianceMatrixProvider(String additionalName, String stmName, MatricesHarvester harvester, StateCovariance covInit)
additionalName
- 额外状态的名称
stmName
- 状态转移矩阵的名称
harvester
- 由propagator.setupMatricesComputation(stmName, null, null)
返回的矩阵收集器
covInit
- 初始状态协方差
public String getName()
getName
在接口 AdditionalStateProvider
public void init(SpacecraftState initialState, AbsoluteDate target)
init
在接口 AdditionalStateProvider
initialState
- 传播开始时的初始状态信息
target
- 传播的日期
public boolean yields(SpacecraftState state)
放弃的决定通常基于提供的state
中是否已经有额外状态(但从理论上讲,也可能取决于额外状态导数是否已经可用,或任何其他标准)。例如,如果提供者需要状态转移矩阵,则可以将此方法实现为:
public boolean yields(final SpacecraftState state) {
return !state.getAdditionalStates().containsKey("STM");
}
默认实现返回false
,这意味着状态数据可以立即生成
。
只有在状态转移矩阵状态可用时才能计算协方差矩阵。
yields
在接口 AdditionalStateProvider
state
- 要处理的状态
true
public double[] getAdditionalState(SpacecraftState state)
getAdditionalState
在接口 AdditionalStateProvider
state
- 需要对应额外状态的航天器状态
public OrbitType getCovarianceOrbitType()
public StateCovariance getStateCovariance(SpacecraftState state)
state
- 需要对应协方差矩阵的航天器状态
getStateCovariance(SpacecraftState, Frame)
,getStateCovariance(SpacecraftState, OrbitType, PositionAngleType)
public StateCovariance getStateCovariance(SpacecraftState state, Frame frame)
输出的协方差矩阵以与getCovarianceOrbitType()
相同的轨道类型表示。
state
- 需要对应协方差矩阵的航天器状态
frame
- 输出帧,输出协方差矩阵必须表示在该帧中(必须是惯性的)
frame
中表示的状态协方差
getStateCovariance(SpacecraftState)
,getStateCovariance(SpacecraftState, OrbitType, PositionAngleType)
public StateCovariance getStateCovariance(SpacecraftState state, OrbitType orbitType, PositionAngleType angleType)
state
- 需要对应协方差矩阵的航天器状态
orbitType
- 输出轨道类型
angleType
- 输出位置角(如果轨道类型等于CARTESIAN
则不使用)
orbitType
和angleType
中的状态协方差
getStateCovariance(SpacecraftState)
,getStateCovariance(SpacecraftState, Frame)
Copyright © 2002-2023 CS GROUP. All rights reserved.