# Confusion with ADC resolution FFT and programming tools

I have a signed 16 bit ADC which means it maps -10V to +10V range to 16 bit. So the max voltage +10V is 2^15-1 = 32767; zero is 0; and -10V is -2^15 = -32768.

My confusion is that when I perform data-acquisition with such 16 bit hardware and do the FFT with MATLAB or Python tool I dont know how the program know the resolution of the data(like 16-bit). And if I create my own array in MATLAB by coding what would be the bit resolution when it does the FFT.

I don't know if I could articulate where I am stuck at. Basically as I have written before imagine you have a have a signed 16 bit ADC which means it maps -10V to +10V range to 16 bit. So the max voltage +10V is 2^15-1 = 32767; zero is 0; and -10V is -2^15 = -32768. And imagine you have a binary file file full of 16-bit samples recorded by this ADC hardware. Now if you perform FFT in MATLAB or Python these tools will read 16 bit file and convert these unsigned bits to voltage and perform FFT.

But imagine you want to do/mimic the same thing with coding not by using FFT. How would you make such array in MATLAB or Python?

Here is an example: Let's say I want to create/plot a sinusoid in MATLAB or Python where I can mimic exactly that 16 bit ADC which samples a 1V 100Hz sinusoid input for 1 seconds which is sampled with 512Hz sampling rate. At the end I want to obtain the same FFT plot where I would obtain after a real ADC sampling. How can that sort of array be obtained? How does the FFT function know the resolution of the ADC when it calculates the FFT?

• Good FFT results require 10 log (samples per wavelength) and high SNR [dB] from resolution . You only have 10log(512/100) and 10 log (1V/10V *32767) so your FFT result will have noise and low Q frequency response (<10) but the peaks can give some indication but >-70dB of of noise below peaks. – Tony Stewart EE75 Jul 23 '18 at 19:37
• Related question – Andy aka Jul 24 '18 at 10:01
• It looks like your question is about how Mathlab/Phyton converts signed 16-bit integer array into floating point array. What is the issue here? Or is it about how to generate a 16-bit signed data out of a floating-point SIN(t) subroutine? It is very unclear what are you asking about. – Ale..chenski Jul 31 '18 at 19:59