|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.ObjectLocaliser.MLGridBearingLocaliser
public class MLGridBearingLocaliser
Maximum likelihood bearing localiser to get bearings from a closely spaced hydrophone array.
| Field Summary | |
|---|---|
private PamVector[] |
arrayAxis
|
private int |
arrayType
|
private int[][] |
crawlPairs
|
private PamArray |
currentArray
|
private double[][][] |
delayErrorGrid
|
private double[][][] |
delayGrid
|
private boolean |
firstGrid
|
(package private) double[][] |
likelihoodLUT
|
private int |
nPairs
|
private int |
nPhiBins
|
private int |
nPhones
|
private int |
nThetaBins
|
private int[] |
pairBearingLocaliserPairs
|
private PairBearingLocaliser[] |
pairBearingLocalisers
|
private double[] |
phiRange
|
private double |
phiStep
|
private int[] |
phoneNumbers
|
private int[][] |
phonePairs
|
(package private) int[][] |
simplex
|
private double |
speedOfSound
|
private double |
speedOfSoundError
|
private double[] |
thetaRange
|
private double |
thetaStep
|
private double |
timingError
|
| Constructor Summary | |
|---|---|
MLGridBearingLocaliser(int[] hydrophoneList,
double timingError)
|
|
MLGridBearingLocaliser(int hydrophoneBitMap,
double timingError)
|
|
| Method Summary | |
|---|---|
private int |
findPairLocaliser(PamVector pamVector)
Find a pair of phones which line up well with pamVector and return a pair localiser made from them . |
private double[][] |
fullGridSearch(double[] delays)
|
PamVector[] |
getArrayAxis()
Get the principle axis of the array |
int |
getArrayType()
|
private double |
getCurvature(double v1,
double v2,
double v3)
|
private double[] |
getErrors(int thetaBin,
int phiBin,
double[] delays)
Calculate the errors on theta and phi based on the curvature of the likelihood surface around the central bins |
private double |
getLLValue(int[] bins,
double[] delays)
|
private double |
getLLValue(int thetaBin,
int phiBin,
double[] delays)
|
private void |
initialiseLLLut()
|
double[][] |
localise(double[] delays)
Calculate angles theta and phi, based on a set of delays. |
double[][] |
localiseByBisection(double[] delays)
|
double[][] |
localiseByCrawl(double[] delays)
|
private double[][] |
localiseBySimplex(double[] delays)
|
private int |
phiAngleToBin(double phi)
Convert an angle into a bin, constrained to 0 <= bin < nBins |
private double |
phiBintoAngle(double bin)
Convert a bin into an angle. |
void |
prepare(int[] arrayElements,
double timingError)
Do any preparation necessary (e.g. |
private void |
prepare(int[] arrayElements,
double timingError,
double thetaStep,
double phiStep)
|
private int |
thetaAngleToBin(double theta)
Convert an angle into a bin, constrained to 0 <= bin < nBins |
private double |
thetaBinToAngle(double bin)
Convert a bin into an angle. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private int nPhones
private int nPairs
private int[] phoneNumbers
private int arrayType
private PamVector[] arrayAxis
private PamArray currentArray
private double speedOfSound
private double speedOfSoundError
private double[][][] delayGrid
private double[][][] delayErrorGrid
private int[][] phonePairs
private double[] thetaRange
private double[] phiRange
private int nThetaBins
private int nPhiBins
private double thetaStep
private double phiStep
private PairBearingLocaliser[] pairBearingLocalisers
private int[] pairBearingLocaliserPairs
private double timingError
int[][] simplex
double[][] likelihoodLUT
private int[][] crawlPairs
private boolean firstGrid
| Constructor Detail |
|---|
public MLGridBearingLocaliser(int hydrophoneBitMap,
double timingError)
public MLGridBearingLocaliser(int[] hydrophoneList,
double timingError)
| Method Detail |
|---|
public void prepare(int[] arrayElements,
double timingError)
BearingLocaliser
prepare in interface BearingLocaliserarrayElements - list of hydrophone array elements in the
sub array for this localiser.timingError - expected timing error for each measurement (typically
1/12 of an ADC bin, or less if interpolation is being used in the cross correlation function).
private void prepare(int[] arrayElements,
double timingError,
double thetaStep,
double phiStep)
private int findPairLocaliser(PamVector pamVector)
pamVector -
private double thetaBinToAngle(double bin)
bin - bin index
private int thetaAngleToBin(double theta)
theta - angle
private double phiBintoAngle(double bin)
bin - bin index
private int phiAngleToBin(double phi)
phi - angle
public PamVector[] getArrayAxis()
BearingLocaliser
getArrayAxis in interface BearingLocaliserfor a planar array, this will be the vector on the plane between two hydrophones which is closest to the y axis.
public int getArrayType()
getArrayType in interface BearingLocaliserpublic double[][] localise(double[] delays)
BearingLocaliser
localise in interface BearingLocaliserdelays - array of delay times.
Data are packed into a two row array, the first row of which contains one or two angles, the second (optional) row contains the errors on those angles.
private double[][] localiseBySimplex(double[] delays)
private void initialiseLLLut()
private double getLLValue(int[] bins,
double[] delays)
private double getLLValue(int thetaBin,
int phiBin,
double[] delays)
private double[] getErrors(int thetaBin,
int phiBin,
double[] delays)
thetaBin - central theta binphiBin - central phi bin
private double getCurvature(double v1,
double v2,
double v3)
public double[][] localiseByCrawl(double[] delays)
private double[][] fullGridSearch(double[] delays)
public double[][] localiseByBisection(double[] delays)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||