What function to use to quantize a variable

2 vues (au cours des 30 derniers jours)
Shawn
Shawn le 9 Fév 2022
Commenté : Shawn le 10 Fév 2022
I think this is a fairly simple problem but not sure what Matlab function to use. I have several variables calculated in normal double precision. They are signed and symetrically bounded between a speficied negative and positive value. I need to "quantize" the variables so that they have a resolution of one part in 64 (6 bit) or one part in 128 (7 bit) resolution between the upper and lower bounds. The output should be a normal double percision variable but "quantized" as described. Not sure what Matlab function(s) or scripts to use.
I do not have any additional tooboxes so need to solve within basic Matlab.
Thanks
  1 commentaire
HighPhi
HighPhi le 9 Fév 2022
can you give us an example variable and desired output?

Connectez-vous pour commenter.

Réponses (1)

David Hill
David Hill le 9 Fév 2022
Something like this.
x=100*rand(1000,1)-50;
h=linspace(-50,50,129);%for 128 resolution
[~,~,bin]=histcounts(x,h);
q=x(bin);
  1 commentaire
Shawn
Shawn le 10 Fév 2022
Dave,
Thanks. Not exactly what I was looking for but enough to set me on the correct path. The script below solves my problem. In the example, I'm taking a variable that spans a range from -5 t0 5 and quantizing into 64 levels. The behavior around zero is particularly what I wanted.... output is zero around zero.
x=linspace(-5,5,10000); % Create vector for example
q = 10/64; % Set quantization = input range/desired quantization
y = q * round(x/q); % This accomplishes the quantization
scatter(x,y) % Show results. Zoom in to see results
grid on

Connectez-vous pour commenter.

Catégories

En savoir plus sur Fractals dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by