Acoular 24.07 documentation

Airfoil in open jet – Frequency domain beamforming methods.

«  Airfoil in open jet – steering vectors.   ::   Wind tunnel examples   ::   Airfoil in open jet – Time domain beamforming methods.  »

Airfoil in open jet – Frequency domain beamforming methods.

Demonstrates different microphone array methods operating in the frequency domain. Uses measured data in file example_data.h5, calibration in file example_calib.xml, microphone geometry in array_56.xml (part of Acoular).

from pathlib import Path

import acoular as ac

The 4 kHz third-octave band is used for the example.

cfreq = 4000
num = 3

Setting up the processing chain for the frequency domain methods.

Hint

An in-depth explanation for setting up the processing chain is given in the example Airfoil in open jet – steering vectors..

ts = ac.MaskedTimeSamples(
    name='../data/example_data.h5',
    invalid_channels=[1, 7],
    start=0,
    stop=16000,
    calib=ac.Calib(from_file='../data/example_calib.xml'),
)
mics = ac.MicGeom(from_file=Path(ac.__file__).parent / 'xml' / 'array_56.xml', invalid_channels=[1, 7])
grid = ac.RectGrid(x_min=-0.6, x_max=-0.0, y_min=-0.3, y_max=0.3, z=0.68, increment=0.05)
env = ac.Environment(c=346.04)
st = ac.SteeringVector(grid=grid, mics=mics, env=env)
f = ac.PowerSpectra(time_data=ts, window='Hanning', overlap='50%', block_size=128)

Here, different frequency domain beamformers defined in the module acoular.fbeamform are used and the corresponding result maps are calculated by evaluating the acoular.fbeamform.BeamformerBase.synthetic() method with the desired frequency and bandwidth.

bb = ac.BeamformerBase(freq_data=f, steer=st, r_diag=True)
bc = ac.BeamformerCapon(freq_data=f, steer=st, cached=False)
be = ac.BeamformerEig(freq_data=f, steer=st, r_diag=True, n=54)
bm = ac.BeamformerMusic(freq_data=f, steer=st, n=6)
bd = ac.BeamformerDamas(freq_data=f, steer=st, r_diag=True, n_iter=100)
bdp = ac.BeamformerDamasPlus(freq_data=f, steer=st, r_diag=True, n_iter=100)
bo = ac.BeamformerOrth(freq_data=f, steer=st, r_diag=True, eva_list=list(range(38, 54)))
bs = ac.BeamformerCleansc(freq_data=f, steer=st, r_diag=True)
bcmf = ac.BeamformerCMF(freq_data=f, steer=st, method='LassoLarsBIC')
bl = ac.BeamformerClean(freq_data=f, steer=st, r_diag=True, n_iter=100)
bf = ac.BeamformerFunctional(freq_data=f, steer=st, r_diag=False, gamma=4)
bgib = ac.BeamformerGIB(freq_data=f, steer=st, method='LassoLars', n=10)

Plot result maps for different beamformers in frequency domain

from pylab import colorbar, figure, imshow, show, subplot, tight_layout, title

figure(1, (10, 6))
i1 = 1  # no of subplot
for b in (bb, bc, be, bm, bl, bo, bs, bd, bcmf, bf, bdp, bgib):
    subplot(3, 4, i1)
    i1 += 1
    map = b.synthetic(cfreq, num)
    mx = ac.L_p(map.max())
    imshow(ac.L_p(map.T), origin='lower', vmin=mx - 15, interpolation='nearest', extent=grid.extend())
    colorbar()
    title(b.__class__.__name__)
    tight_layout()
show()
BeamformerBase, BeamformerCapon, BeamformerEig, BeamformerMusic, BeamformerClean, BeamformerOrth, BeamformerCleansc, BeamformerDamas, BeamformerCMF, BeamformerFunctional, BeamformerDamasPlus, BeamformerGIB
[('example_data_cache.h5', 6)]
[('example_data_cache.h5', 7)]
[('example_data_cache.h5', 8)]
[('example_data_cache.h5', 9)]
[('example_data_cache.h5', 10)]
[('example_data_cache.h5', 10), ('psf_8b8411267ea325364427a1259e52d4be_cache.h5', 1)]
[('example_data_cache.h5', 11)]
[('example_data_cache.h5', 12)]
[('example_data_cache.h5', 13)]
[('example_data_cache.h5', 13), ('psf_8b8411267ea325364427a1259e52d4be_cache.h5', 1)]
[('example_data_cache.h5', 14)]
[('example_data_cache.h5', 15)]
[('example_data_cache.h5', 16)]
[('example_data_cache.h5', 16), ('psf_8b8411267ea325364427a1259e52d4be_cache.h5', 1)]
[('example_data_cache.h5', 17)]

Total running time of the script: (0 minutes 6.338 seconds)

Gallery generated by Sphinx-Gallery

«  Airfoil in open jet – steering vectors.   ::   Wind tunnel examples   ::   Airfoil in open jet – Time domain beamforming methods.  »