From Analog to Digital: Signal Simulation in MATLAB
Published: 2025-09-08
When we deal with audio, sensors, or communication systems, most of the signals start as analog — continuous in time and amplitude. Computers, however, need digital signals. This post shows how to simulate the process of sampling and quantization in MATLAB, and how signal quality depends on these steps. 1. Analog Signal We start with a simple sine wave at 100 Hz: t = 0:0.0001:0.01; f = 100; x_analog = sin(2*pi*f*t); plot(t, x_analog, 'k', 'LineWidth', 1.5); title('Analog Signal'); This represents a continuous-time signal. 2. Sampling (Nyquist Theorem) The Nyquist theorem says we need to sample at least 2 × frequency to avoid aliasing. For a 100 Hz sine wave, that means ≥ 200 Hz. We try three cases: Below Nyquist: 150 Hz At Nyquist: 200 Hz Above Nyquist: 1000 Hz Fs_list = [150, 200, 1000]; % Hz colors = {'r', 'g', 'b'}; for i = 1:length(Fs_list) Fs = Fs_list(i); Ts = 1/Fs; n = 0:Ts:0.01; x_sampled = sin(2*pi*f*n); subplot(3,1,i); stem(n, x_sampled, colors{i}, 'filled'); hold on; plot(t, x_analog, 'k'); title(['Sampling at Fs = ' num2str(Fs) ' Hz']); end 👉 Result: At 150 Hz, aliasing appears (signal looks distorted). At 200 Hz, it’s just sufficient. At 1000 Hz, the sampled signal closely follows the analog one. 3. Quantization After sampling, amplitudes are still continuous. Quantization maps them to discrete levels. More levels = better quality, but more bits needed. We try 8, 16, and 64 levels (3, 4, and 6 bits): bits_list = [3, 4, 6]; % bits Fs = 1000; % high sampling to isolate quantization effect Ts = 1/Fs; n = 0:Ts:0.01; x_sampled = sin(2*pi*f*n); for j = 1:length(bits_list) bits = bits_list(j); levels = 2^bits; x_min = min(x_sampled); x_max = max(x_sampled); q_step = (x_max - x_min)/levels; x_index = round((x_sampled - x_min)/q_step); x_quantized = x_index*q_step + x_min; subplot(3,1,j); stem(n, x_quantized, 'filled'); hold on; plot(t, x_analog, 'k'); title([num2str(levels) ' Levels (' num2str(bits) ' bits)']); end 👉 Result: With 8 levels, the signal looks blocky. With 16 levels, smoother. With 64 levels, almost identical to analog. 4. Conclusion This small experiment shows the trade-offs in digital signal processing: Sampling frequency determines whether aliasing occurs. Quantization levels control resolution and quality. More samples and more bits mean better accuracy, but also more storage and bandwidth. 👉 Code + plots are available here: https://github.com/alainord/Mathematical-Algorithms-1st-assigment#
Source: https://dev.to/alainord/from-analog-to-digital-signal-simulation-in-matlab-3pg6