Package beamformer.algorithms.mvdr
Class MVDRalgorithm
java.lang.Object
beamformer.algorithms.mvdr.MVDRalgorithm
- All Implemented Interfaces:
 BeamFormerAlgorithm
The algorithm class for the Minimum Variance Distortionless Response beamformer.
- Author:
 - mo55
 
- 
Field Summary
FieldsModifier and TypeFieldDescriptionprotected int[]The order of channels in the incoming FFT data units array - 
Constructor Summary
ConstructorsConstructorDescriptionMVDRalgorithm(MVDRProvider mvdrProvider, BeamFormerBaseProcess beamFormerProcess, MVDRParams mvdrParams, int firstSeqNum, int beamogramNum)  - 
Method Summary
Modifier and TypeMethodDescriptionvoidclear the list of channel ordersgetBeamInformation(int iBeam) Get information about a specific beam.protected voidgetChannelOrder(FFTDataUnit[] fftDataUnits) loop over the number of channels and determine the order of the hydrophones in the FFTDataUnits object.intGet the number of angles used in the beamogram calculation.intGet the number of output beamsvoidprepare()Prepare the algorithm.voidprocess(FFTDataUnit[] fftDataUnits) Process an array of FFTDataUnits.voidsetFrequencyBinRange(int binFrom, int binTo) Set a frequency bin range for the BeamOGram analysis.voidsetKeepFrequencyInformation(boolean keep) Tell the algorithm to keep frequency information in beamOGram output.booleanBoolean indicating whether a beamOgram should be created (true) or not (false) 
- 
Field Details
- 
chanOrder
protected int[] chanOrderThe order of channels in the incoming FFT data units array 
 - 
 - 
Constructor Details
- 
MVDRalgorithm
public MVDRalgorithm(MVDRProvider mvdrProvider, BeamFormerBaseProcess beamFormerProcess, MVDRParams mvdrParams, int firstSeqNum, int beamogramNum) - Parameters:
 mvdrProvider-beamFormerProcess-mvdrParams-firstSeqNum-beamogramNum-
 
 - 
 - 
Method Details
- 
prepare
public void prepare()Description copied from interface:BeamFormerAlgorithmPrepare the algorithm. Gets called just before it starts. It's here that steering vectors, etc. should get calculated.- Specified by:
 preparein interfaceBeamFormerAlgorithm
 - 
process
Process an array of FFTDataUnits. The size of the array will equal the number of channels in this beam group- Specified by:
 processin interfaceBeamFormerAlgorithm- Parameters:
 fftDataUnits- array of FFT data units.
 - 
getChannelOrder
loop over the number of channels and determine the order of the hydrophones in the FFTDataUnits object. Create a look up table to match the order of hydrophones in the fftDataUnits array to the order in the steeringVecs array- Parameters:
 fftDataUnits-
 - 
clearChannelOrderList
public void clearChannelOrderList()clear the list of channel orders - 
getNumBeams
public int getNumBeams()Description copied from interface:BeamFormerAlgorithmGet the number of output beams- Specified by:
 getNumBeamsin interfaceBeamFormerAlgorithm- Returns:
 - number of output beams
 
 - 
getNumBeamogramAngles
public int getNumBeamogramAngles()Description copied from interface:BeamFormerAlgorithmGet the number of angles used in the beamogram calculation. Note that at the moment all beamograms must use the same angles in order be able to add their data to the common PamDataBlock. The BasicFreqDomParams object defines the beamogram angles as from 0 deg to 180 deg in 2 degree steps (91 angles total). This should be matched in all other algorithms capable of creating beamograms, until changes can be made to accomodate different PamDataUnit sizes in the same PamDataBlock.- Specified by:
 getNumBeamogramAnglesin interfaceBeamFormerAlgorithm- Returns:
 - the number of angles used in the beamogram calculation
 
 - 
getBeamInformation
Description copied from interface:BeamFormerAlgorithmGet information about a specific beam. I've currently no idea whatsoever what information we're going to include here !- Specified by:
 getBeamInformationin interfaceBeamFormerAlgorithm- Parameters:
 iBeam-- Returns:
 
 - 
thereIsABeamogram
public boolean thereIsABeamogram()Description copied from interface:BeamFormerAlgorithmBoolean indicating whether a beamOgram should be created (true) or not (false)- Specified by:
 thereIsABeamogramin interfaceBeamFormerAlgorithm- Returns:
 
 - 
getBeamProcess
- Returns:
 - the beamProcess
 
 - 
setKeepFrequencyInformation
public void setKeepFrequencyInformation(boolean keep) Description copied from interface:BeamFormerAlgorithmTell the algorithm to keep frequency information in beamOGram output.- Specified by:
 setKeepFrequencyInformationin interfaceBeamFormerAlgorithm- Parameters:
 keep-
 - 
setFrequencyBinRange
public void setFrequencyBinRange(int binFrom, int binTo) Description copied from interface:BeamFormerAlgorithmSet a frequency bin range for the BeamOGram analysis.
Beam forming will take place between binFrom to binTo.
(Not inclusive - so binTo can equal fftLength/2 process loop is for (int i = binFrom; i invalid input: '<' bnTo; i++)).- Specified by:
 setFrequencyBinRangein interfaceBeamFormerAlgorithm- Parameters:
 binFrom- first bin to processbinTo- last bin to process
 
 -