1
$\begingroup$

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) enter image description here

Here is also comparison of 2 FFTs:

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

enter image description here

$\endgroup$

1 Answer 1

1
$\begingroup$

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

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.