aspcol.kernelinterpolation_jax.multifreq_diffuse_kernel
- aspcol.kernelinterpolation_jax.multifreq_diffuse_kernel(pos1, pos2, wave_num, diag_mat=True)
Multiple frequency diffuse sound field kernel.
Defined for each position pair as diag{}_{i=0}^{L//2} j_0 (k_i lVert r - r’ rVert_2^2) where L is the (even) length of the real DFT, and hence L//2 + 1 is the number of real frequencies.
- Parameters:
pos1 (np.ndarray of shape (num_points1, 3)) – Position of the first point.
pos2 (np.ndarray of shape (num_points2, 3)) – Position of the second point.
wave_num (np.ndarray of shape (num_real_freqs,)) – Wave number, defined as 2*pi*f/c, where f is the frequency and c is the speed of sound.
- Returns:
np.ndarray of shape (num_points1, num_points2, num_real_freqs, num_real_freqs) – Returned if diag_mat is true. Is a diagonal matrix
np.ndarray of shape (num_points1, num_points2, num_real_freqs) – Returned if diag_mat is false. Contains the same values as the diagonal matrix, so is a more space-efficient representation.
Notes
Clearly this is space-inefficient implementation as a diagonal matrix is stored as a full matrix. But it is provided to easy combine with other functions and check correctness.
References
[uenoKernel2018] [brunnströmTime2025]