public abstract class AbstractLambdaMethod extends Object implements IntegerLeastSquareSolver
该类基于1996年Paul de Jonge和Christian Tiberius的论文整数模糊度估计的LAMBDA方法:实现方面以及2005年X.-W Chang,X. Yang和T. Zhou的论文整数最小二乘估计的修改LAMBDA方法,地球测量学杂志79(9):552-565,DOI:10.1007/s00190-005-0004-x
Modifier | Constructor and Description |
---|---|
protected |
AbstractLambdaMethod()
构造函数。
|
Modifier and Type | Method and Description |
---|---|
protected void |
addSolution(long[] fixed, double squaredNorm)
添加一个新解。
|
protected abstract void |
discreteSearch()
找到整数最小二乘问题的最佳解。
|
protected double[] |
getDecorrelatedReference()
获取参考去相关模糊度。
|
protected double[] |
getDiagReference()
获取分解对角矩阵的引用。
|
protected double[] |
getLowReference()
获取分解下三角矩阵的引用。
|
protected double |
getMaxDistance()
获取找到的解之间的最大距离。
|
protected int |
getMaxSolution()
获取寻找的最大解数。
|
protected int |
getSize()
获取问题的大小。
|
protected int |
getSolutionsSize()
获取找到的解数。
|
protected int[] |
getZInverseTransformationReference()
获取Z逆变换矩阵的引用。
|
protected void |
integerGaussTransformation(int row, int col)
执行一次整数高斯变换。
|
protected abstract void |
inverseDecomposition()
反转分解。
|
protected int |
lIndex(int row, int col)
获取下三角矩阵中条目的索引。
|
protected abstract void |
ltdlDecomposition()
执行协方差矩阵的Lᵀ.D.L = Q分解。
|
protected void |
permutation(int k0, double delta)
执行涉及行/列 k0 和k0+1 的对称置换。
|
protected IntegerLeastSquareSolution[] |
recoverAmbiguities()
在Z变换之前恢复模糊度。
|
protected abstract void |
reduction()
执行LAMBDA减少。
|
protected void |
removeSolution()
移除虚假解。
|
void |
setComparator(Comparator<IntegerLeastSquareSolution> newCompartor)
为整数最小二乘解比较设置自定义比较器。
|
IntegerLeastSquareSolution[] |
solveILS(int nbSol, double[] floatAmbiguities, int[] indirection, org.hipparchus.linear.RealMatrix covariance)
找到整数最小二乘问题的最佳解。
|
protected int |
zIndex(int row, int col)
获取Z变换矩阵中条目的索引。
|
protected AbstractLambdaMethod()
默认情况下,使用IntegerLeastSquareComparator
进行整数最小二乘解比较
public IntegerLeastSquareSolution[] solveILS(int nbSol, double[] floatAmbiguities, int[] indirection, org.hipparchus.linear.RealMatrix covariance)
solveILS
在接口 IntegerLeastSquareSolver
nbSol
- 要搜索的解的数量
floatAmbiguities
- 模糊度的浮点估计
indirection
- 从全局协方差矩阵中提取模糊度协方差的间接数组
covariance
- 全局协方差矩阵(包括其他参数中的模糊度)
nbSol
个整数最小二乘问题的解,按递增的平方距离顺序排列
public void setComparator(Comparator<IntegerLeastSquareSolution> newCompartor)
调用此方法会覆盖之前设置的任何比较器。它还会覆盖默认的IntegerLeastSquareComparator
。
newCompartor
- 要使用的新比较器
protected double[] getDiagReference()
注意:返回的值是对内部数组的引用,仅供子类使用(因此该方法是受保护的,而不是公共的)。
protected double[] getLowReference()
注意:返回的值是对内部数组的引用,仅供子类使用(因此该方法是受保护的,而不是公共的)。
protected double[] getDecorrelatedReference()
protected int getMaxSolution()
protected void addSolution(long[] fixed, double squaredNorm)
fixed
- 解数组
squaredNorm
- 与相应浮点解的平方距离
protected void removeSolution()
protected int getSolutionsSize()
protected double getMaxDistance()
protected int[] getZInverseTransformationReference()
注意:返回的值是对内部数组的引用,仅供子类使用(因此该方法是受保护的,而不是公共的)。注意:对于修改后的LAMBDA方法,返回的矩阵Z满足Q = Z'L'DLZ,其中Q是协方差矩阵,'表示转置操作
protected int getSize()
protected abstract void ltdlDecomposition()
protected abstract void reduction()
protected abstract void discreteSearch()
protected abstract void inverseDecomposition()
此方法将协方差的Lᵀ.D.L = Q分解转换为协方差的逆的L⁻¹.D⁻¹.L⁻ᵀ = Q⁻¹分解。
protected void integerGaussTransformation(int row, int col)
此方法对应于X.-W Chang,X. Yang和T. Zhou论文中的算法2.1。
row
- 行索引(从0开始计数)
col
- 列索引(从0开始计数)
protected void permutation(int k0, double delta)
k0
和k0+1
的对称置换。
此方法对应于X.-W Chang,X. Yang和T. Zhou论文中的算法2.2。
k0
- 对角线索引(从0开始计数)
delta
- diag[k0+1]的新值
protected IntegerLeastSquareSolution[] recoverAmbiguities()
protected int lIndex(int row, int col)
row
- 行索引(从0开始计数)
col
- 列索引(从0开始计数)
protected int zIndex(int row, int col)
row
- 行索引(从0开始计数)
col
- 列索引(从0开始计数)
Copyright © 2002-2023 CS GROUP. All rights reserved.