Package beamformer.algorithms.mvdr
Class MVDRBeam
java.lang.Object
beamformer.algorithms.BeamInformation
beamformer.algorithms.mvdr.MVDRBeam
-
Constructor Summary
ConstructorsConstructorDescriptionMVDRBeam
(MVDRalgorithm mvdRalgorithm, int channelMap, int sequenceNum, PamVector beamVec, PamVector[] elementLocs, double[] freqBins, double speedOfSound) Main constructor -
Method Summary
Modifier and TypeMethodDescriptionprotected void
Calculates a steering vector over all hydrophones and all frequency bins in the fftint
Return the number of FFT bins this beam needs to process.int
int
Return the index number in the FFT data unit that corresponds to the minimum frequency to analyse.process
(org.apache.commons.math3.linear.FieldMatrix<org.apache.commons.math3.complex.Complex>[] Rinv) Process a set of FFT Data units over the entire frequency rangeprocess
(org.apache.commons.math3.linear.FieldMatrix<org.apache.commons.math3.complex.Complex>[] Rinv, int startBin, int numBins, int fullNumFFTBins) Process a set of FFT Data units.
-
Constructor Details
-
MVDRBeam
public MVDRBeam(MVDRalgorithm mvdRalgorithm, int channelMap, int sequenceNum, PamVector beamVec, PamVector[] elementLocs, double[] freqBins, double speedOfSound) Main constructor- Parameters:
mvdRalgorithm
-channelMap
-sequenceNum
-beamVec
-elementLocs
-freqBins
-speedOfSound
-channelList
-weights
-
-
-
Method Details
-
calcSteeringVec
protected void calcSteeringVec()Calculates a steering vector over all hydrophones and all frequency bins in the fftA phase delay of the form ejinvalid input: 'ω't is calculated for each frequency bin, where invalid input: 'ω'=the angular frequency (=2*invalid input: 'π'*center-of-freq-bin) and t is the time delay based on the location of the hydrophone.
t is calculated as the location vector of the hydrophone / speed of sound (=locVec/c).
The wave number k is defined as invalid input: 'ω'/c. Substituting for t gives the phase delay in the form ej*k*locVec, which can also be expressed through Euler's formula as cos(k*locVec)+j*sin(k*locVec). The cos/sin values are saved to the steering FieldMatrix, and a conjugate form is saved to the steeringConj FieldMatrix.
- Parameters:
elementNumber
- the hydrophone number
-
process
public ComplexArray process(org.apache.commons.math3.linear.FieldMatrix<org.apache.commons.math3.complex.Complex>[] Rinv) Process a set of FFT Data units over the entire frequency range- Returns:
- complex array of summed beamformed data. Note that the size of the array is the number of frequency bins in the full frequency range, as specified by the user in the parameters GUI
-
process
public ComplexArray process(org.apache.commons.math3.linear.FieldMatrix<org.apache.commons.math3.complex.Complex>[] Rinv, int startBin, int numBins, int fullNumFFTBins) Process a set of FFT Data units. Note that we may only be processing a portion of the frequency range- Parameters:
Rinv
- array containing one FFTDataUnit for each channel to analysestartBin
- the index in the FFTDataUnit to start processing at.numBins
- the number of FFT bins to processfullNumFFTBins
- the number of fft bins in an FFTDataUnit object- Returns:
- complex array of summed beamformed data. Note that the size of the array is the number of frequency bins in the full frequency range, as specified by the user in the parameters GUI, even if only a portion of that range was actually processed
-
getSequenceMap
public int getSequenceMap()- Returns:
- the sequenceMap
-
getStartIdx
public int getStartIdx()Return the index number in the FFT data unit that corresponds to the minimum frequency to analyse. This refers to the entire frequency range as specified by the user in the parameters GUI- Returns:
- the starting index number
-
getNumFFTBins
public int getNumFFTBins()Return the number of FFT bins this beam needs to process. This is the entire frequency range, as specified by the user in the parameters GUI- Returns:
- the number of frequency bins in the entire frequency range
-