BeamformerBase#
- class acoular.fbeamform.BeamformerBase
Bases:
HasStrictTraitsBeamforming using the basic delay-and-sum algorithm in the frequency domain.
- steer = Instance(SteeringVector, args=())
Instance of
SteeringVectoror its derived classes that contains information about the steering vector. This is a private trait. Do not set this directly, use steer trait instead.
- freq_data = Instance(PowerSpectra)
PowerSpectraobject that provides the cross spectral matrix and eigenvalues
- r_diag = Bool(True)
Boolean flag, if ‘True’ (default), the main diagonal is removed before beamforming.
- r_diag_norm = Float(0.0)
If diagonal of the CSM is removed, some signal energy is lost. This is handled via this normalization factor. Internally, the default is: num_mics / (num_mics - 1).
If r_diag==True: if r_diag_norm==0.0, the default 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 = Enum('float64', 'float32')
Floating point precision of property result. Corresponding to numpy dtypes. Default = 64 Bit.
- cached = Bool(True)
Boolean flag, if ‘True’ (default), the result is cached in h5 files.
- h5f = Instance(H5CacheFileBase, transient=True)
hdf5 cache file
- result = Property()
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 [].
- digest = Property(depends_on=BEAMFORMER_BASE_DIGEST_DEPENDENCIES)
A unique identifier for the beamformer, based on its properties. (read-only)
- 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 frequencyand 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.indicesorRectGrid3D.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_lowandPowerSpectra.ind_highoffreq_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_dataand 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