Tools for FRIDA (azimuth only)¶
-
pyroomacoustics.doa.tools_fri_doa_plane.
Rmtx_ri
(coef_ri, K, D, L)¶ Split T matrix in rea/imaginary representation
-
pyroomacoustics.doa.tools_fri_doa_plane.
Rmtx_ri_half
(coef_half, K, D, L, D_coef)¶ Split T matrix in rea/imaginary conjugate symmetric representation
-
pyroomacoustics.doa.tools_fri_doa_plane.
Rmtx_ri_half_out_half
(coef_half, K, D, L, D_coef, mtx_shrink)¶ if both b and annihilation filter coefficients are Hermitian symmetric, then the output will also be Hermitian symmetric => the effectively output is half the size
-
pyroomacoustics.doa.tools_fri_doa_plane.
Tmtx_ri
(b_ri, K, D, L)¶ build convolution matrix associated with b_ri
Parameters: - b_ri – a real-valued vector
- K – number of Diracs
- D1 – expansion matrix for the real-part
- D2 – expansion matrix for the imaginary-part
-
pyroomacoustics.doa.tools_fri_doa_plane.
Tmtx_ri_half
(b_ri, K, D, L, D_coef)¶ Split T matrix in conjugate symmetric representation
-
pyroomacoustics.doa.tools_fri_doa_plane.
Tmtx_ri_half_out_half
(b_ri, K, D, L, D_coef, mtx_shrink)¶ if both b and annihilation filter coefficients are Hermitian symmetric, then the output will also be Hermitian symmetric => the effectively output is half the size
-
pyroomacoustics.doa.tools_fri_doa_plane.
build_mtx_amp
(phi_k, p_mic_x, p_mic_y)¶ the matrix that maps Diracs’ amplitudes to the visibility
Parameters: - phi_k – Diracs’ location (azimuth)
- p_mic_x – a vector that contains microphones’ x-coordinates
- p_mic_y – a vector that contains microphones’ y-coordinates
-
pyroomacoustics.doa.tools_fri_doa_plane.
build_mtx_amp_ri
(p_mic_x, p_mic_y, phi_k)¶ builds real/imaginary amplitude matrix
-
pyroomacoustics.doa.tools_fri_doa_plane.
build_mtx_raw_amp
(p_mic_x, p_mic_y, phi_k)¶ the matrix that maps Diracs’ amplitudes to the visibility
Parameters: - phi_k – Diracs’ location (azimuth)
- p_mic_x – a vector that contains microphones’ x-coordinates
- p_mic_y – a vector that contains microphones’ y-coordinates
-
pyroomacoustics.doa.tools_fri_doa_plane.
coef_expan_mtx
(K)¶ expansion matrix for an annihilating filter of size K + 1
Parameters: K – number of Dirac. The filter size is K + 1
-
pyroomacoustics.doa.tools_fri_doa_plane.
compute_b
(G_lst, GtG_lst, beta_lst, Rc0, num_bands, a_ri, use_lu=False, GtG_inv_lst=None)¶ compute the uniform sinusoidal samples b from the updated annihilating filter coeffiients.
Parameters: - GtG_lst – list of G^H G for different subbands
- beta_lst – list of beta-s for different subbands
- Rc0 – right-dual matrix, here it is the convolution matrix associated with c
- num_bands – number of bands
- a_ri – a 2D numpy array. each column corresponds to the measurements within a subband
-
pyroomacoustics.doa.tools_fri_doa_plane.
compute_mtx_obj
(GtG_lst, Tbeta_lst, Rc0, num_bands, K)¶ - compute the matrix (M) in the objective function:
- min c^H M c s.t. c0^H c = 1
Parameters: - GtG_lst – list of G^H * G
- Tbeta_lst – list of Teoplitz matrices for beta-s
- Rc0 – right dual matrix for the annihilating filter (same of each block -> not a list)
-
pyroomacoustics.doa.tools_fri_doa_plane.
compute_obj_val
(GtG_inv_lst, Tbeta_lst, Rc0, c_ri_half, num_bands, K)¶ compute the fitting error. CAUTION: Here we assume use_lu = True
-
pyroomacoustics.doa.tools_fri_doa_plane.
cov_mtx_est
(y_mic)¶ estimate covariance matrix
Parameters: y_mic – received signal (complex based band representation) at microphones
-
pyroomacoustics.doa.tools_fri_doa_plane.
cpx_mtx2real
(mtx)¶ extend complex valued matrix to an extended matrix of real values only
Parameters: mtx – input complex valued matrix
-
pyroomacoustics.doa.tools_fri_doa_plane.
dirac_recon_ri
(G, a_ri, K, M, noise_level, max_ini=100, stop_cri='mse')¶ Reconstruct point sources’ locations (azimuth) from the visibility measurements
Parameters: - G – the linear transformation matrix that links the visibilities to uniformly sampled sinusoids
- a_ri – the visibility measurements
- K – number of Diracs
- M – the Fourier series expansion is between -M and M
- noise_level – level of noise (ell_2 norm) in the measurements
- max_ini – maximum number of initialisations
- stop_cri – stopping criterion, either ‘mse’ or ‘max_iter’
-
pyroomacoustics.doa.tools_fri_doa_plane.
dirac_recon_ri_half
(G, a_ri, K, M, noise_level, max_ini=100, stop_cri='mse')¶ Reconstruct point sources’ locations (azimuth) from the visibility measurements. Here we enforce hermitian symmetry in the annihilating filter coefficients so that roots on the unit circle are encouraged.
Parameters: - G (param) – the linear transformation matrix that links the visibilities to uniformly sampled sinusoids
- a_ri – the visibility measurements
- K – number of Diracs
- M – the Fourier series expansion is between -M and M
- noise_level – level of noise (ell_2 norm) in the measurements
- max_ini – maximum number of initialisations
- stop_cri – stopping criterion, either ‘mse’ or ‘max_iter’
-
pyroomacoustics.doa.tools_fri_doa_plane.
dirac_recon_ri_half_multiband
(G_lst, a_ri, K, M, max_ini=100)¶ Reconstruct point sources’ locations (azimuth) from the visibility measurements. Here we enforce hermitian symmetry in the annihilating filter coefficients so that roots on the unit circle are encouraged.
Parameters: - G_lst – a list of the linear transformation matrices that links the visibilities to uniformly sampled sinusoids
- a_ri – the visibility measurements
- K – number of Diracs
- M – the Fourier series expansion is between -M and M
- noise_level – level of noise (ell_2 norm) in the measurements
- max_ini – maximum number of initialisations
- stop_cri – stopping criterion, either ‘mse’ or ‘max_iter’
-
pyroomacoustics.doa.tools_fri_doa_plane.
dirac_recon_ri_half_multiband_lu
(G_lst, GtG_lst, GtG_inv_lst, a_ri, K, M, max_ini=100, max_iter=50)¶ Here we use LU decomposition to precompute a few entries. Reconstruct point sources’ locations (azimuth) from the visibility measurements. Here we enforce hermitian symmetry in the annihilating filter coefficients so that roots on the unit circle are encouraged.
Parameters: - G_lst – a list of the linear transformation matrices that links the visibilities to uniformly sampled sinusoids
- a_ri – the visibility measurements
- K – number of Diracs
- M – the Fourier series expansion is between -M and M
- noise_level – level of noise (ell_2 norm) in the measurements
- max_ini – maximum number of initialisations
- stop_cri – stopping criterion, either ‘mse’ or ‘max_iter’
-
pyroomacoustics.doa.tools_fri_doa_plane.
dirac_recon_ri_half_multiband_parallel
(G, a_ri, K, M, max_ini=100)¶ Reconstruct point sources’ locations (azimuth) from the visibility measurements. Here we enforce hermitian symmetry in the annihilating filter coefficients so that roots on the unit circle are encouraged. We use parallel implementation when stop_cri == ‘max_iter’
Parameters: - G – the linear transformation matrix that links the visibilities to uniformly sampled sinusoids
- a_ri – the visibility measurements
- K – number of Diracs
- M – the Fourier series expansion is between -M and M
- noise_level – level of noise (ell_2 norm) in the measurements
- max_ini – maximum number of initialisations
- stop_cri – stopping criterion, either ‘mse’ or ‘max_iter’
-
pyroomacoustics.doa.tools_fri_doa_plane.
dirac_recon_ri_half_parallel
(G, a_ri, K, M, max_ini=100)¶ Reconstruct point sources’ locations (azimuth) from the visibility measurements. Here we enforce hermitian symmetry in the annihilating filter coefficients so that roots on the unit circle are encouraged. We use parallel implementation when stop_cri == ‘max_iter’
Parameters: - G – the linear transformation matrix that links the visibilities to uniformly sampled sinusoids
- a_ri – the visibility measurements
- K – number of Diracs
- M – the Fourier series expansion is between -M and M
- noise_level – level of noise (ell_2 norm) in the measurements
- max_ini – maximum number of initialisations
- stop_cri – stopping criterion, either ‘mse’ or ‘max_iter’
-
pyroomacoustics.doa.tools_fri_doa_plane.
dirac_recon_ri_inner
(c_ri_half, a_ri, rhs, rhs_bl, K, M, D1, D2, D_coef, mtx_shrink, Tbeta_ri, G, max_iter)¶ inner loop of the dirac_recon_ri_half_parallel function
-
pyroomacoustics.doa.tools_fri_doa_plane.
dirac_recon_ri_multiband_inner
(c_ri_half, a_ri, num_bands, rhs, rhs_bl, K, M, D1, D2, D_coef, mtx_shrink, Tbeta_ri, G, GtG, max_iter)¶ Inner loop of the dirac_recon_ri_multiband function
-
pyroomacoustics.doa.tools_fri_doa_plane.
extract_off_diag
(mtx)¶ extract off diagonal entries in mtx. The output vector is order in a column major manner.
Parameters: mtx – input matrix to extract the off diagonal entries
-
pyroomacoustics.doa.tools_fri_doa_plane.
hermitian_expan
(half_vec_len)¶ expand a real-valued vector to a Hermitian symmetric vector. The input vector is a concatenation of the real parts with NON-POSITIVE indices and the imaginary parts with STRICTLY-NEGATIVE indices.
Parameters: half_vec_len – length of the first half vector
-
pyroomacoustics.doa.tools_fri_doa_plane.
lu_compute_mtx_obj
(Tbeta_lst, num_bands, K, lu_R_GtGinv_Rt_lst)¶ - compute the matrix (M) in the objective function:
- min c^H M c s.t. c0^H c = 1
Parameters: - GtG_lst – list of G^H * G
- Tbeta_lst – list of Teoplitz matrices for beta-s
- Rc0 – right dual matrix for the annihilating filter (same of each block -> not a list)
-
pyroomacoustics.doa.tools_fri_doa_plane.
lu_compute_mtx_obj_initial
(GtG_inv_lst, Tbeta_lst, Rc0, num_bands, K)¶ - compute the matrix (M) in the objective function:
- min c^H M c s.t. c0^H c = 1
Parameters: - GtG_lst – list of G^H * G
- Tbeta_lst – list of Teoplitz matrices for beta-s
- Rc0 – right dual matrix for the annihilating filter (same of each block -> not a list)
-
pyroomacoustics.doa.tools_fri_doa_plane.
make_G
(p_mic_x, p_mic_y, omega_bands, sound_speed, M, signal_type='visibility')¶ reconstruct point sources on the circle from the visibility measurements from multi-bands.
Parameters: - p_mic_x – a vector that contains microphones’ x-coordinates
- p_mic_y – a vector that contains microphones’ y-coordinates
- omega_bands – mid-band (ANGULAR) frequencies [radian/sec]
- sound_speed – speed of sound
- signal_type – The type of the signal a, possible values are ‘visibility’ for covariance matrix and ‘raw’ for microphone inputs
Returns: Return type: The list of mapping matrices from measurements to sinusoids
-
pyroomacoustics.doa.tools_fri_doa_plane.
make_GtG_and_inv
(G_lst)¶
-
pyroomacoustics.doa.tools_fri_doa_plane.
mtx_freq2raw
(M, p_mic_x, p_mic_y)¶ build the matrix that maps the Fourier series to the raw microphone signals
Parameters: - M – the Fourier series expansion is limited from -M to M
- p_mic_x – a vector that contains microphones x coordinates
- p_mic_y – a vector that contains microphones y coordinates
-
pyroomacoustics.doa.tools_fri_doa_plane.
mtx_freq2visi
(M, p_mic_x, p_mic_y)¶ build the matrix that maps the Fourier series to the visibility
Parameters: - M – the Fourier series expansion is limited from -M to M
- p_mic_x – a vector that constains microphones x coordinates
- p_mic_y – a vector that constains microphones y coordinates
-
pyroomacoustics.doa.tools_fri_doa_plane.
mtx_fri2signal_ri
(M, p_mic_x, p_mic_y, D1, D2, signal='visibility')¶ build the matrix that maps the Fourier series to the visibility in terms of REAL-VALUED entries only. (matrix size double)
Parameters: - M – the Fourier series expansion is limited from -M to M
- p_mic_x – a vector that contains microphones x coordinates
- p_mic_y – a vector that contains microphones y coordinates
- D1 – expansion matrix for the real-part
- D2 – expansion matrix for the imaginary-part
- signal – The type of signal considered (‘visibility’ for covariance matrix, ‘raw’ for microphone inputs)
-
pyroomacoustics.doa.tools_fri_doa_plane.
mtx_fri2signal_ri_multiband
(M, p_mic_x_all, p_mic_y_all, D1, D2, aslist=False, signal='visibility')¶ build the matrix that maps the Fourier series to the visibility in terms of REAL-VALUED entries only. (matrix size double)
Parameters: - M – the Fourier series expansion is limited from -M to M
- p_mic_x_all – a matrix that contains microphones x coordinates
- p_mic_y_all – a matrix that contains microphones y coordinates
- D1 – expansion matrix for the real-part
- D2 – expansion matrix for the imaginary-part aslist: whether the linear mapping for each subband is returned as a list or a block diagonal matrix
- signal – The type of signal considered (‘visibility’ for covariance matrix, ‘raw’ for microphone inputs)
-
pyroomacoustics.doa.tools_fri_doa_plane.
mtx_updated_G
(phi_recon, M, mtx_amp2visi_ri, mtx_fri2visi_ri)¶ Update the linear transformation matrix that links the FRI sequence to the visibilities by using the reconstructed Dirac locations. :param phi_recon: the reconstructed Dirac locations (azimuths) :param M: the Fourier series expansion is between -M to M :param p_mic_x: a vector that contains microphones’ x-coordinates :param p_mic_y: a vector that contains microphones’ y-coordinates :param mtx_freq2visi: the linear mapping from Fourier series to visibilities
-
pyroomacoustics.doa.tools_fri_doa_plane.
mtx_updated_G_multiband
(phi_recon, M, mtx_amp2visi_ri, mtx_fri2visi_ri, num_bands)¶ Update the linear transformation matrix that links the FRI sequence to the visibilities by using the reconstructed Dirac locations.
Parameters: - phi_recon – the reconstructed Dirac locations (azimuths)
- M – the Fourier series expansion is between -M to M
- p_mic_x – a vector that contains microphones’ x-coordinates
- p_mic_y – a vector that contains microphones’ y-coordinates
- mtx_fri2visi – the linear mapping from Fourier series to visibilities
-
pyroomacoustics.doa.tools_fri_doa_plane.
mtx_updated_G_multiband_new
(phi_opt, M, p_x, p_y, G0_lst, num_bands)¶ Update the linear transformation matrix that links the FRI sequence to the visibilities by using the reconstructed Dirac locations.
Parameters: - phi_opt – the reconstructed Dirac locations (azimuths)
- M – the Fourier series expansion is between -M to M
- p_mic_x – a vector that contains microphones’ x-coordinates
- p_mic_y – a vector that contains microphones’ y-coordinates
- G0_lst – the original linear mapping from Fourier series to visibilities
- num_bands – number of subbands
-
pyroomacoustics.doa.tools_fri_doa_plane.
multiband_cov_mtx_est
(y_mic)¶ estimate covariance matrix based on the received signals at microphones
Parameters: y_mic – received signal (complex base-band representation) at microphones
-
pyroomacoustics.doa.tools_fri_doa_plane.
multiband_extract_off_diag
(mtx)¶ extract off-diagonal entries in mtx The output vector is order in a column major manner
Parameters: mtx (input matrix to extract the off-diagonal entries) –
-
pyroomacoustics.doa.tools_fri_doa_plane.
output_shrink
(K, L)¶ shrink the convolution output to half the size. used when both the annihilating filter and the uniform samples of sinusoids satisfy Hermitian symmetric.
Parameters: - K – the annihilating filter size: K + 1
- L – length of the (complex-valued) b vector
-
pyroomacoustics.doa.tools_fri_doa_plane.
polar2cart
(rho, phi)¶ convert from polar to cartesian coordinates
Parameters: - rho – radius
- phi – azimuth
-
pyroomacoustics.doa.tools_fri_doa_plane.
pt_src_recon
(a, p_mic_x, p_mic_y, omega_band, sound_speed, K, M, noise_level, max_ini=50, stop_cri='mse', update_G=False, verbose=False, signal_type='visibility', **kwargs)¶ reconstruct point sources on the circle from the visibility measurements
Parameters: - a – the measured visibilities
- p_mic_x – a vector that contains microphones’ x-coordinates
- p_mic_y – a vector that contains microphones’ y-coordinates
- omega_band – mid-band (ANGULAR) frequency [radian/sec]
- sound_speed – speed of sound
- K – number of point sources
- M – the Fourier series expansion is between -M to M
- noise_level – noise level in the measured visibilities
- max_ini – maximum number of random initialisation used
- stop_cri – either ‘mse’ or ‘max_iter’
- update_G – update the linear mapping that links the uniformly sampled sinusoids to the visibility or not.
- verbose – whether output intermediate results for debugging or not
- signal_type – The type of the signal a, possible values are ‘visibility’ for covariance matrix and ‘raw’ for microphone inputs
- kwargs (possible optional input: G_iter: number of iterations for the G updates) –
-
pyroomacoustics.doa.tools_fri_doa_plane.
pt_src_recon_multiband
(a, p_mic_x, p_mic_y, omega_bands, sound_speed, K, M, noise_level, max_ini=50, update_G=False, verbose=False, signal_type='visibility', max_iter=50, G_lst=None, GtG_lst=None, GtG_inv_lst=None, **kwargs)¶ reconstruct point sources on the circle from the visibility measurements from multi-bands.
Parameters: - a – the measured visibilities in a matrix form, where the second dimension corresponds to different subbands
- p_mic_x – a vector that contains microphones’ x-coordinates
- p_mic_y – a vector that contains microphones’ y-coordinates
- omega_bands – mid-band (ANGULAR) frequencies [radian/sec]
- sound_speed – speed of sound
- K – number of point sources
- M – the Fourier series expansion is between -M to M
- noise_level – noise level in the measured visibilities
- max_ini – maximum number of random initialisation used
- update_G – update the linear mapping that links the uniformly sampled sinusoids to the visibility or not.
- verbose – whether output intermediate results for debugging or not
- signal_type – The type of the signal a, possible values are ‘visibility’ for covariance matrix and ‘raw’ for microphone inputs
- kwargs – possible optional input: G_iter: number of iterations for the G updates
-
pyroomacoustics.doa.tools_fri_doa_plane.
pt_src_recon_rotate
(a, p_mic_x, p_mic_y, K, M, noise_level, max_ini=50, stop_cri='mse', update_G=False, num_rotation=1, verbose=False, signal_type='visibility', **kwargs)¶ reconstruct point sources on the circle from the visibility measurements. Here we apply random rotations to the coordiantes.
Parameters: - a – the measured visibilities
- p_mic_x – a vector that contains microphones’ x-coordinates
- p_mic_y – a vector that contains microphones’ y-coordinates
- K – number of point sources
- M – the Fourier series expansion is between -M to M
- noise_level – noise level in the measured visibilities
- max_ini – maximum number of random initialisation used
- stop_cri – either ‘mse’ or ‘max_iter’
- update_G – update the linear mapping that links the uniformly sampled sinusoids to the visibility or not.
- num_rotation – number of random rotations
- verbose – whether output intermediate results for debugging or not
- signal_type – The type of the signal a, possible values are ‘visibility’ for covariance matrix and ‘raw’ for microphone inputs
- kwargs – possible optional input: G_iter: number of iterations for the G updates