[docs]deflog_compression(signal,cf,normalize=False):""" Log compress an input signal. Args: signal: signal to be log compressed cf: compression factor normalize (bool): when true, signal is normalized before compression Returns: signal: log-compressed signal """ifnormalize:ms=np.max(signal,axis=-1)ifnp.ndim(signal)==2:ms=ms[:,np.newaxis]signal=ms*(np.log10(1+cf*signal/ms)/np.log10(1+cf))else:signal=np.log10(1+cf*signal)/np.log10(1+cf)returnsignal
[docs]defapodize(distance,aperture,window):""" Function that assigns different apodization to a set of pixels and elements """ifwindow=="none":apod=np.ones(np.size(distance))elifwindow=="boxcar":apod=np.double(distance<=aperture/2.0)elifwindow=="hanning":apod=np.double(distance<=aperture/2)*(0.5+0.5*np.cos(2*np.pi*distance/aperture))elifwindow=="hamming":apod=np.double(distance<=aperture)/2*(0.53836+0.46164*np.cos(2*np.pi*distance/aperture))elifwindow=="tukey25":roll=0.25apod=(distance<(aperture/2*(1-roll)))+(distance>(aperture/2*(1-roll)))*(distance<(aperture/2))*0.5*(1+np.cos(2*np.pi/roll*(distance/aperture-roll/2-1/2)))elifwindow=="tukey50":roll=0.5apod=(distance<(aperture/2*(1-roll)))+(distance>(aperture/2*(1-roll)))*(distance<(aperture/2))*0.5*(1+np.cos(2*np.pi/roll*(distance/aperture-roll/2-1/2)))elifwindow=="tukey75":roll=0.75apod=(distance<(aperture/2*(1-roll)))+(distance>(aperture/2*(1-roll)))*(distance<(aperture/2))*0.5*(1+np.cos(2*np.pi/roll*(distance/aperture-roll/2-1/2)))else:raiseValueError("Unknown window type. Known types are: boxcar, hamming, hanning, tukey25, tukey50, tukey75.")returnapod