-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathquantize_signal.m
More file actions
19 lines (18 loc) · 826 Bytes
/
quantize_signal.m
File metadata and controls
19 lines (18 loc) · 826 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
% Quantizer
function quantized_signal = quantize_signal(sampled_signal, L, mp, mu)
% Compute step size
step_size = (2 * mp) / (L - 1);
if mu == 0
% Uniform Mid-Rise Quantizer
quantized_signal = round((sampled_signal + mp) / step_size) * step_size - mp; % This creates a uniform distribution of error values within this interval
else
% μ-law Quantizer
% Compress
compressed = sign(sampled_signal) .* (log(1 + mu * abs(sampled_signal)/mp) / log(1 + mu)) * mp;
% Quantize compressed signal
quantized_compressed = round((compressed + mp) / step_size) * step_size - mp;
% Expand
quantized_signal = sign(quantized_compressed) .* ...
((mp / mu) .* ((1 + mu).^(abs(quantized_compressed)/mp) - 1));
end
end