# Realize Simulink block “Ideal ADC Quantizer” in Matlab

Yesterday I posted following topic: "FFT alternates '0' for a quantized SIN wave". During post editing I was perturbed by some affair, I didn't formulate correctly the problem. So, my post was blocked (i.e. "hold on"). My subsequent update didn't modify the post status: it remains "hold on".

Since, I advanced in the problem resolution. The problem originates from erroneous quantization of SIN waveform. For quantization I use Matlab "quantiz" function, that take 2 parameters: "partition" and "codebook". After changing the fragment of code that is related to quantization (please, see below) the problem disappears, i.e. FFT displays correctly for all frequencies of SIN waveform.

dy = (2*A)/2^res;
partition = (-A+3/2^(res+1):dy:A-3/2^(res+1));
codebook = (0:2^res-1);
[index,yq] = quantiz(y,partition,codebook);
yq = 2*yq/(2^res-1)-1;


where:

A - amplitude of SIN wave (=1)

res - resolution of quantizer (10bit)

But nevertheless some incertitude remains: when I to solve the same task in Simulink (using "Ideal ADC Quantizer" block, the results of Simulink simulation are slightly different from Matlab simulation.

Any suggestions ?

Thanks

P.S. Here is Simulink model (with ADC settings)

Here is also comparison of 2 FFTs:

• SIN waveform, quantized in Simulink (TOP)
• SIN waveform, quantized in Matlab and imported in Simulink (Bottom)

## 1 Answer

Resolved. The problem was in erroneous quantization. Here is the correct quantization code:

% Quantization
dy = (2*A)/(2^res-1);
partition = (-A+A/2^res:dy:A-A/2^res);
codebook = (0:2^res-1);
[index,yq] = quantiz(y,partition,codebook);
yq = 2*A*yq/(2^res-1)-A;


where:

y - SIN waveform values

A - amplitude of SIN waveform

res - resolution of quantizer