Computes the selected criterion over a grid of frequencies 
        with limits and resolution specified by the inputs. After that
        the best local maxima are evaluated over a finer frequency grid
        
        Parameters
        ---------
        fmin: float
            starting frequency
        fmax: float
            stopping frequency
        fresolution: float
            step size in the frequency grid

def frequency_grid_evaluation(self, fmin=0.0, fmax=1.0, fresolution=1e-4, n_local_max=10):
        """ 
        Computes the selected criterion over a grid of frequencies 
        with limits and resolution specified by the inputs. After that
        the best local maxima are evaluated over a finer frequency grid
        
        Parameters
        ---------
        fmin: float
            starting frequency
        fmax: float
            stopping frequency
        fresolution: float
            step size in the frequency grid
        
        """
        self.fres_grid = fresolution
        freq = np.arange(np.amax([fmin, fresolution]), fmax, step=fresolution).astype('float32')
        Nf = len(freq)
        per = np.zeros(shape=(Nf,)).astype('float32')     
              
        for k in range(0, Nf):
            per[k] = self.compute_metric(freq[k])
        self.freq = freq
        self.per = per