matlab code about function of quantization
Show older comments
I have been given a quantization function (matlab code) but I'm confused in some places, pls help....(PS: y is a signal(-1 to 1) and 12 bits is used to quantize)
===============================================================================
function [symbols_quant]=quantization(y)
b=12;
q=2/(2^b);
for i =1: length(y)
symbols_quant(i)= max(min((round(y(i) * 2^(b-1))/(2^(b-1)))-sign(y(i))*q/2 , 1) , -1);
==============================================================================
Question 1: why we should multiply the sample,y(i), with by 2^(b-1) , and then round it to get the quantized value? But not directly round it...What is the principle behind?
Thank you very much if you can give me a hand.
Accepted Answer
More Answers (3)
Azzi Abdelmalek
on 13 Mar 2013
function [symbols_quant]=quantization(y)
b=12
q=2/(2^b-1)
symbols_quant=round(y/q)*q
3 Comments
fdsa
on 13 Mar 2013
Azzi Abdelmalek
on 13 Mar 2013
Example
y=10
q=0.3
% after quantization y should be 9.9
% round(y/q)=round(10/0.3)=round(33.33)=33
% round(y/q)*q=33*0.3=9.9
fdsa
on 13 Mar 2013
Azzi Abdelmalek
on 13 Mar 2013
Edited: Azzi Abdelmalek
on 13 Mar 2013
One way how a real ADC works
% for values from 0 to 10
n=12
q=10/(2^n-1)
max_val=10/2
u=6.5555 % Example
bit=zeros(1,n)
for k=1:n
if u>max_val
bit(k)=1
u=u-max_val
end
max_val=max_val/2
end
disp(bit) % The bits that codify your input.
quantized_value=sum(bit.*2.^(n-1:-1:0)*q)
fdsa
on 15 Mar 2013
0 votes
Categories
Find more on Cast and Quantize Data in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!