Source code for RCAIDE.Library.Methods.Noise.Common.convert_to_third_octave_band

# RCAIDE/Methods/Noise/Common/convert_to_third_octave_band.py
# 
# 
# Created:  Jul 2023, M. Clarke  

# ----------------------------------------------------------------------------------------------------------------------
#  IMPORT
# ---------------------------------------------------------------------------------------------------------------------- 
# Python package imports   
import numpy as np  
    
# ----------------------------------------------------------------------------------------------------------------------  
#  Convert to Third Octave Band 
# ----------------------------------------------------------------------------------------------------------------------       
[docs] def convert_to_third_octave_band(SPL,f,settings): """This method converts the SPL spectrum from blade harmonic passing frequency to third octave spectrum Assumptions: N/A Source: Inputs: SPL - sound pressure level [dB] f - blade passing spectrum frequencies [Hz] settings. center_frequencies - center frequencies of the 1/3 octave spectrum [dB] lower_frequencies - lower frequencies of the 1/3 octave spectrum [dB] upper_frequencies - upper frequencies of the 1/3 octave spectrum [dB] Outputs: SPL_third_octave - SPL in the 1/3 octave spectrum [dB] Properties Used: N/A """ # unpack cf = settings.center_frequencies lf = settings.lower_frequencies uf = settings.upper_frequencies dim_cpt = len(SPL[:,0,0]) dim_mic = len(SPL[0,:,0]) num_cf = len(cf) num_f = len(f[0,0,:]) uf_vals = np.tile(uf[None,None,:,None],(dim_cpt,dim_mic,1,num_f)) lf_vals = np.tile(lf[None,None,:,None],(dim_cpt,dim_mic,1,num_f)) f_vals = np.tile(f[:,:,None,:],(1,1,num_cf,1)) SPL_vals = np.tile(SPL[:,:,None,:],(1,1,num_cf,1)) upper_bool = (f_vals <= uf_vals) lower_bool = (lf_vals <= f_vals) boolean = np.logical_and(upper_bool,lower_bool) SPL_array = boolean*SPL_vals p_prefs = 10**(SPL_array/10) SPL_third_octave = 10*np.log10(np.sum(boolean*p_prefs, axis =3)) SPL_third_octave[np.isinf(SPL_third_octave)] = 0 return SPL_third_octave