BeamformerBase¶
- class acoular.fbeamform.BeamformerBase¶
Bases:
HasPrivateTraits
Beamforming using the basic delay-and-sum algorithm in the frequency domain.
- steer = Property(desc='steering vector object')¶
SteeringVector
or derived object. Defaults toSteeringVector
object.
- freq_data = Trait(PowerSpectra, desc='freq data object')¶
PowerSpectra
object that provides the cross spectral matrix and eigenvalues
- r_diag = Bool(True, desc='removal of diagonal')¶
Boolean flag, if ‘True’ (default), the main diagonal is removed before beamforming.
- r_diag_norm = Float( …¶
If r_diag==True: if r_diag_norm==0.0, the standard normalization = num_mics/(num_mics-1) is used. If r_diag_norm !=0.0, the user input is used instead. If r_diag==False, the normalization is 1.0 either way.
- precision = Trait('float64', 'float32', desc='precision (32/64 Bit) of result, corresponding to numpy dtypes')¶
Floating point precision of property result. Corresponding to numpy dtypes. Default = 64 Bit.
- cached = Bool(True, desc='cached flag')¶
Boolean flag, if ‘True’ (default), the result is cached in h5 files.
- result = Property(desc='beamforming result')¶
The beamforming result as squared sound pressure values at all grid point locations (readonly). Returns a (number of frequencies, number of gridpoints) array-like of floats. Values can only be accessed via the index operator [].
- sig_loss_norm()¶
If the diagonal of the CSM is removed one has to handle the loss of signal energy –> Done via a normalization factor.
- synthetic(f, num=0)¶
Evaluates the beamforming result for an arbitrary frequency band.
- Parameters:
- f: float
Band center frequency.
- numinteger
Controls the width of the frequency bands considered; defaults to 0 (single frequency line).
num
frequency band width
0
single frequency line
1
octave band
3
third-octave band
n
1/n-octave band
- Returns:
- array of floats
The synthesized frequency band values of the beamforming result at each grid point . Note that the frequency resolution and therefore the bandwidth represented by a single frequency line depends on the
sampling frequency
and usedFFT block size
.
- integrate(sector, frange=None, num=0)¶
Integrates result map over a given sector.
- Parameters:
- sector: array of floats or :class:`~acoular.grids.Sector`
either an array, tuple or list with arguments for the ‘indices’ method of a
Grid
-derived class (e.g.RectGrid.indices
orRectGrid3D.indices
). Possible sectors would be array([xmin, ymin, xmax, ymax]) or array([x, y, radius]) or an instance of aSector
-derived class- frange: tuple or None
a tuple of (fmin,fmax) frequencies to include in the result if num*==0, or band center frequency/frequencies for which to return the results if *num>0; if None, then the frequency range is determined from the settings of the
PowerSpectra.ind_low
andPowerSpectra.ind_high
offreq_data
- numinteger
Controls the width of the frequency bands considered; defaults to 0 (single frequency line). Only considered if frange is not None.
num
frequency band width
0
single frequency line
1
octave band
3
third-octave band
n
1/n-octave band
- Returns:
- res or (f, res): array of floats or tuple(array of floats, array of floats)
If frange*==None or *num>0, the spectrum (all calculated frequency bands) for the integrated sector is returned as res. The dimension of this array is the number of frequencies given by
freq_data
and entries not computed are zero. If frange!=None and num*==0, then (f, res) is returned where *f are the (band) frequencies and the dimension of both arrays is determined from frange