Acoular 24.07 documentation

BeamformerBase

«  SteeringVector   ::   fbeamform   ::   BeamformerFunctional  »

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 to SteeringVector 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 used FFT 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 or RectGrid3D.indices). Possible sectors would be array([xmin, ymin, xmax, ymax]) or array([x, y, radius]) or an instance of a Sector-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 and PowerSpectra.ind_high of freq_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

«  SteeringVector   ::   fbeamform   ::   BeamformerFunctional  »