public abstract class AbstractLambdaMethod extends Object implements IntegerLeastSquareSolver
This class is based on both the 1996 paper The LAMBDA method for integer ambiguity estimation: implementation aspects by Paul de Jonge and Christian Tiberius and on the 2005 paper A modified LAMBDA method for integer least-squares estimation by X.-W Chang, X. Yang and T. Zhou, Journal of Geodesy 79(9):552-565, DOI: 10.1007/s00190-005-0004-x
Modifier | Constructor and Description |
---|---|
protected |
AbstractLambdaMethod()
Constructor.
|
Modifier and Type | Method and Description |
---|---|
protected void |
addSolution(long[] fixed,
double squaredNorm)
Add a new solution.
|
protected abstract void |
discreteSearch()
Find the best solutions to the Integer Least Square problem.
|
protected double[] |
getDecorrelatedReference()
Get the reference decorrelated ambiguities.
|
protected double[] |
getDiagReference()
Get a reference to the diagonal matrix of the decomposition.
|
protected double[] |
getLowReference()
Get a reference to the lower triangular matrix of the decomposition.
|
protected double |
getMaxDistance()
Get the maximum of distance among the solutions found.
|
protected int |
getMaxSolution()
Get the maximum number of solutions seeked.
|
protected int |
getSize()
Get the size of the problem.
|
protected int |
getSolutionsSize()
Get the number of solutions found.
|
protected int[] |
getZInverseTransformationReference()
Get a reference to the Z inverse transformation matrix.
|
protected void |
integerGaussTransformation(int row,
int col)
Perform one integer Gauss transformation.
|
protected abstract void |
inverseDecomposition()
Inverse the decomposition.
|
protected int |
lIndex(int row,
int col)
Get the index of an entry in the lower triangular matrix.
|
protected abstract void |
ltdlDecomposition()
Perform Lᵀ.D.L = Q decomposition of the covariance matrix.
|
protected void |
permutation(int k0,
double delta)
Perform one symmetric permutation involving rows/columns
k0 and k0+1 . |
protected IntegerLeastSquareSolution[] |
recoverAmbiguities()
Recover ambiguities prior to the Z-transformation.
|
protected abstract void |
reduction()
Perform LAMBDA reduction.
|
protected void |
removeSolution()
Remove spurious solution.
|
void |
setComparator(Comparator<IntegerLeastSquareSolution> newCompartor)
Set a custom comparator for integer least square solutions comparison.
|
IntegerLeastSquareSolution[] |
solveILS(int nbSol,
double[] floatAmbiguities,
int[] indirection,
RealMatrix covariance)
Find the best solutions to an Integer Least Square problem.
|
protected int |
zIndex(int row,
int col)
Get the index of an entry in the Z transformation matrix.
|
protected AbstractLambdaMethod()
By default a IntegerLeastSquareComparator
is used
to compare integer least square solutions
public IntegerLeastSquareSolution[] solveILS(int nbSol, double[] floatAmbiguities, int[] indirection, RealMatrix covariance)
solveILS
in interface IntegerLeastSquareSolver
nbSol
- number of solutions to search forfloatAmbiguities
- float estimates of ambiguitiesindirection
- indirection array to extract ambiguity covariances from global covariance matrixcovariance
- global covariance matrix (includes ambiguities among other parameters)nbSol
solutions a to the Integer Least Square problem, in increasing
squared distance orderpublic void setComparator(Comparator<IntegerLeastSquareSolution> newCompartor)
Calling this method overrides any comparator that could have been set
beforehand. It also overrides the default IntegerLeastSquareComparator
.
newCompartor
- new comparator to useprotected double[] getDiagReference()
BEWARE: the returned value is a reference to an internal array, it is only intended for subclasses use (hence the method is protected and not public).
protected double[] getLowReference()
BEWARE: the returned value is a reference to an internal array, it is only intended for subclasses use (hence the method is protected and not public).
protected double[] getDecorrelatedReference()
protected int getMaxSolution()
protected void addSolution(long[] fixed, double squaredNorm)
fixed
- solution arraysquaredNorm
- squared distance to the corresponding float solutionprotected void removeSolution()
protected int getSolutionsSize()
protected double getMaxDistance()
protected int[] getZInverseTransformationReference()
BEWARE: the returned value is a reference to an internal array, it is only intended for subclasses use (hence the method is protected and not public). BEWARE: for the MODIFIED LAMBDA METHOD, the returned matrix Z is such that Q = Z'L'DLZ where Q is the covariance matrix and ' refers to the transposition operation
protected int getSize()
protected abstract void ltdlDecomposition()
protected abstract void reduction()
protected abstract void discreteSearch()
protected abstract void inverseDecomposition()
This method transforms the Lᵀ.D.L = Q decomposition of covariance into the L⁻¹.D⁻¹.L⁻ᵀ = Q⁻¹ decomposition of the inverse of covariance.
protected void integerGaussTransformation(int row, int col)
This method corresponds to algorithm 2.1 in X.-W Chang, X. Yang and T. Zhou paper.
row
- row index (counting from 0)col
- column index (counting from 0)protected void permutation(int k0, double delta)
k0
and k0+1
.
This method corresponds to algorithm 2.2 in X.-W Chang, X. Yang and T. Zhou paper.
k0
- diagonal index (counting from 0)delta
- new value for diag[k0+1]protected IntegerLeastSquareSolution[] recoverAmbiguities()
protected int lIndex(int row, int col)
row
- row index (counting from 0)col
- column index (counting from 0)protected int zIndex(int row, int col)
row
- row index (counting from 0)col
- column index (counting from 0)Copyright © 2002-2021 CS GROUP. All rights reserved.