Acoular 16.5 documentation

PowerSpectra

«  acoular.spectra.synthetic   ::   spectra   ::   EigSpectra  »

PowerSpectra

class acoular.spectra.PowerSpectra

Bases: traits.has_traits.HasPrivateTraits

Provides the cross spectral matrix of multichannel time data.

This class includes the efficient calculation of the full cross spectral matrix using the Welch method with windows and overlap. It also contains data and additional properties of this matrix.

The result is computed only when needed, that is when the csm attribute is actually read. Any change in the input data or parameters leads to a new calculation, again triggered when csm is read. The result may be cached on disk in HDF5 files and need not to be recomputed during subsequent program runs with identical input data and parameters. The input data is taken to be identical if the source has identical parameters and the same file name in case of that the data is read from a file.

time_data = Trait(SamplesGenerator, desc="time data object")

The SamplesGenerator object that provides the data.

numchannels = Delegate('time_data')

Number of samples

calib = Instance(Calib)

The Calib object that provides the calibration data, defaults to no calibration, i.e. the raw time data is used.

deprecated: use calib property of TimeSamples objects

block_size = Trait(1024, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, desc="number of samples per FFT block")

FFT block size, one of: 128, 256, 512, 1024, 2048 ... 16384, defaults to 1024

ind_low = Range(1, desc="index of lowest frequency line")

Index of lowest frequency line to compute, integer, defaults to 1, is used only by objects that fetch the csm, PowerSpectra computes every frequency line

ind_high = Int(-1, desc="index of highest frequency line")

Index of highest frequency line to compute, integer, defaults to -1 (last possible line for default block_size).

window = Trait('Rectangular', {'Rectangular':ones, 'Hanning':hanning, 'Hamming':hamming, 'Bartlett':bartlett, 'Blackman':blackman}, desc="type of window for FFT")

Window function for FFT, one of: ‘Rectangular’ (default), ‘Hanning’, ‘Hamming’, ‘Bartlett’, ‘Blackman’

overlap = Trait('None', {'None':1, '50%':2, '75%':4, '87.5%':8}, desc="overlap of FFT blocks")

Overlap factor for averaging: ‘None’(default), ‘50%’, ‘75%’, ‘87.5%’

cached = Bool(True, desc="cached flag")

Flag, if true (default), the result is cached in h5 files and need not to be recomputed during subsequent program runs

num_blocks = Property( desc="overall number of FFT blocks")

Number of FFT blocks to average, readonly (set from block_size and overlap).

freq_range = Property( desc = "frequency range" )

2-element array with the lowest and highest frequency, readonly.

indices = Property( desc = "index range" )

Array with a sequence of indices for all frequencies between ind_low and ind_high within the result, readonly.

basename = Property( depends_on = 'time_data.digest', desc="basename for cache file")

Name of the cache file without extension, readonly.

csm = Property( desc="cross spectral matrix")

The cross spectral matrix, (number of frequencies, numchannels, numchannels) array of complex readonly.

fftfreq()

Return the Discrete Fourier Transform sample frequencies.

Returns:

f : ndarray

Array of length block_size/2+1 containing the sample frequencies.

«  acoular.spectra.synthetic   ::   spectra   ::   EigSpectra  »