Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 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')