# SPDX-FileCopyrightText: Copyright © 2024 Idiap Research Institute <contact@idiap.ch> # SPDX-FileContributor: Hatef OTROSHI <hatef.otroshi@idiap.ch> # SPDX-License-Identifier: MIT import numpy def find_q_levels(all_data, n_quantization_levels): ''' Parametrs: all_data: array n_quantization_levels: int Return: quantization_levels: list quantization levels ''' all_data = all_data.flatten() samples_per_bin = int(all_data.shape[0]/n_quantization_levels) edge_samples = (numpy.arange(n_quantization_levels-1) + 1 ) * samples_per_bin all_sorted_data = numpy.sort(all_data) quantization_levels = all_sorted_data[edge_samples] return quantization_levels def quantize_f(f, quantization_levels): ''' Parametrs: f: float quantization_levels: list Return: level: int quantization level for f ''' level = len(quantization_levels) - 1 for l in range(len(quantization_levels)): if f<quantization_levels[l]: level = l break return level def quantize_vector(data, quantization_levels): quantized_data = [] for i,f in enumerate(data): q_level_f = quantize_f(f, quantization_levels) quantized_data.append(q_level_f) return numpy.array(quantized_data, dtype='int')