add additional penalty for freqs above the eod_freq in f_zero error

This commit is contained in:
alexanderott 2021-01-30 15:50:29 +01:00
parent ad7a8bcfd3
commit 365b108daf

View File

@ -396,7 +396,7 @@ class Fitter:
# error_f_zero_slopes = calculate_list_error(f_zero_slopes, self.f_zero_slopes)
error_f_zero_slope_at_straight = abs(self.f_zero_slope_at_straight - f_zero_slope_at_straight) \
/ abs(self.f_zero_slope_at_straight+1)
error_f_zero = calculate_list_error(f_zeros, self.f_zero_values) / 10
error_f_zero = calculate_list_error(f_zeros, self.f_zero_values, self.eod_freq) / 10
error_f0_curve = self.calculate_f0_curve_error(model, fi_curve_model) / 20
@ -537,11 +537,16 @@ class Fitter:
# return abs(model_area_above - cell_area_above)
def calculate_list_error(fit, reference):
def calculate_list_error(fit, reference, eod_freq=0):
error = 0
for i in range(len(reference)):
# error += abs_freq_error(fit[i] - reference[i])
error += normed_quadratic_freq_error(fit[i], reference[i])
if eod_freq != 0 and fit[i] > 1.1*eod_freq:
error += normed_quadratic_freq_error(fit[i], reference[i]) * 10
else:
error += normed_quadratic_freq_error(fit[i], reference[i])
norm_error = error / len(reference)
return norm_error