Modal Beamforming

Submodules for modal beamforming

Angular

micarray.modal.angular.sht_matrix(N, azi, elev, weights=None)[source]

(N+1)**2 x M SHT matrix

micarray.modal.angular.Legendre_matrix(N, ctheta)[source]

(N+1) x M matrix of weighted Legendre Polynominals 2*n+1/4*pi * P_n(ctheta)

micarray.modal.angular.grid_equal_angle(n)[source]

equi_angular grid on sphere. (cf. Rafaely book, sec.3.2)

micarray.modal.angular.grid_gauss(n)[source]

Gauss-Legendre sampling points on sphere. (cf. Rafaely book, sec.3.3)

Radial

micarray.modal.radial.spherical_pw(N, k, r, setup)[source]

Radial coefficients for a plane wave

Computes the radial component of the spherical harmonics expansion of a plane wave impinging on a spherical array.

\[\mathring{P}_n(k) = 4 \pi i^n b_n(kr)\]
Parameters:
  • N (int) – Maximum order.
  • k (array_like) – Wavenumber.
  • r (float) – Radius of microphone array.
  • setup ({‘open’, ‘card’, ‘rigid’}) – Array configuration (open, cardioids, rigid).
Returns:

numpy.ndarray – Radial weights for all orders up to N and the given wavenumbers.

micarray.modal.radial.spherical_ps(N, k, r, rs, setup)[source]

Radial coefficients for a point source

Computes the radial component of the spherical harmonics expansion of a point source impinging on a spherical array.

\[\mathring{P}_n(k) = 4 \pi (-i) k h_n^{(2)}(k r_s) b_n(kr)\]
Parameters:
  • N (int) – Maximum order.
  • k (array_like) – Wavenumber.
  • r (float) – Radius of microphone array.
  • rs (float) – Distance of source.
  • setup ({‘open’, ‘card’, ‘rigid’}) – Array configuration (open, cardioids, rigid).
Returns:

numpy.ndarray – Radial weights for all orders up to N and the given wavenumbers.

micarray.modal.radial.weights(N, kr, setup)[source]

Radial weighing functions

Computes the radial weighting functions for diferent array types (cf. eq.(2.62), Rafaely 2015).

For instance for an rigid array

\[b_n(kr) = j_n(kr) - \frac{j_n^\prime(kr)}{h_n^{(2)\prime}(kr)}h_n^{(2)}(kr)\]
Parameters:
  • N (int) – Maximum order.
  • kr (array_like) – Wavenumber * radius.
  • setup ({‘open’, ‘card’, ‘rigid’}) – Array configuration (open, cardioids, rigid).
Returns:

numpy.ndarray – Radial weights for all orders up to N and the given wavenumbers.

micarray.modal.radial.regularize(dn, a0, method)[source]

(cf. Rettberg, Spors : DAGA 2014)

micarray.modal.radial.diagonal_mode_mat(bk)[source]