MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Ryan on 11 May 2013

Hi, I am working on a project and I am not sure how to convert the input signal from an analog to an 8-bit digital signal. Here is my code:

t = [0:1:4000]; % Number of Samples fs = 4500; % Sampled Frequency

Input = sin((2*pi*t)/fs); % Analog Sine Wave subplot(2,1,1) plot(Input) % Analog Sine Wave Plot grid on

My question is how to convert this sine wave sampled at 4500 Hz into a digital 8-bit signal.

*No products are associated with this question.*

Answer by Azzi Abdelmalek on 11 May 2013

Edited by Azzi Abdelmalek on 11 May 2013

Accepted answer

t = [0:1:4000]; fs = 4500; Input1 = sin((2*pi*t)/fs); quant=max(Input1)/(2^7-1) y=round(Input1/quant) signe=uint8((sign(y)'+1)/2) out=[signe dec2bin(abs(y),7)] % The first bit represents the sign of the number

## 4 Comments

Direct link to this comment:http://se.mathworks.com/matlabcentral/answers/75379#comment_148348

That's not an analog signal. You're just converting one digitized signal into another. For a true analog signal you'd need the Data Acquisition Toolbox to digitize an actual,

trulyanalog signal: http://www.mathworks.com/products/daq/?s_tid=hp_fp_listDirect link to this comment:http://se.mathworks.com/matlabcentral/answers/75379#comment_148350

His signal is discrete but not digitized.

Direct link to this comment:http://se.mathworks.com/matlabcentral/answers/75379#comment_148351

And not analog either. But it is in a digital computer so it's quantized/digitized to the smallest amount that the computer can handle (is that eps?) Perhaps you have a different definition of digitized than me. Because he is taking samples at certain times, the sine wave output will also take on certain discrete values, not uniformly spaced along the y axis. But even though his signal may take on only 4001 discrete values, it is still digitized at 64 bits. Of course he can convert that to 8 bits (256 discrete values) if he wants. An analog signal would be continuous, like the voltage you'd get from measuring an electronic circuit (ignoring the quantization you get at the charge of a single electron). That said, I'm just being picky about the definitions - I actually think he really did want your answer.

Direct link to this comment:http://se.mathworks.com/matlabcentral/answers/75379#comment_148365

The real ADC (Analog to Digital Converter) works with 8,10,12 or 16 bits, rarely with 32 bits (It depends on the sample frequency wich causes noise). We can consider that a digitized number at 64 bits, with a very small sample time, represent an analog signal, which can be sampled and quantized again at 8 bits for example.

The Simulink simulate continuous and discrete systems, both are represented by 64 bits digitized data.