Bird
Raised Fist0
Signal Processingdata~10 mins

Sampling and reconstruction in communication in Signal Processing - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Sampling and reconstruction in communication
Start: Analog Signal
↓
Sampling: Take values at intervals
↓
Discrete Signal: Sequence of samples
↓
Reconstruction: Use samples to rebuild
↓
Output: Approximate original signal
↓
End
The analog signal is sampled at regular intervals to create discrete samples, which are then used to reconstruct an approximation of the original signal.
Execution Sample
Signal Processing
import numpy as np
import matplotlib.pyplot as plt

# Analog signal
t = np.linspace(0, 1, 1000)
x = np.sin(2 * np.pi * 5 * t)

# Sampling
fs = 20  # sampling frequency
n_samples = int(fs * 1)
sample_times = np.linspace(0, 1, n_samples, endpoint=False)
samples = np.sin(2 * np.pi * 5 * sample_times)

# Reconstruction
reconstructed = np.interp(t, sample_times, samples)

# Plot
plt.plot(t, x, label='Original Signal')
plt.stem(sample_times, samples, linefmt='r-', markerfmt='ro', basefmt='k-', label='Samples')
plt.plot(t, reconstructed, 'g--', label='Reconstructed Signal')
plt.legend()
plt.show()
This code samples a 5 Hz sine wave at 20 Hz, then reconstructs it using linear interpolation and plots all signals.
Execution Table
StepActionVariableValue/Result
1Create time vector for analog signaltArray of 1000 points from 0 to 1
2Generate analog signal x = sin(2π5t)xSine wave values at t
3Set sampling frequency fsfs20 Hz
4Calculate number of samplesn_samples20
5Create sample timessample_times20 points from 0 to 0.95 step 0.05
6Sample signal at sample_timessamplesSine values at sample_times
7Reconstruct signal by interpolationreconstructedInterpolated values at t
8Plot original, samples, reconstructedPlotGraph with 3 curves
9End--
💡 All steps completed to sample and reconstruct the signal
Variable Tracker
VariableStartAfter Step 2After Step 5After Step 6After Step 7Final
tNoneArray 0-1 (1000 pts)SameSameSameSame
xNoneSine wave valuesSameSameSameSame
fsNoneNone20202020
n_samplesNoneNone20202020
sample_timesNoneNoneArray 20 pts 0-0.95SameSameSame
samplesNoneNoneNoneSine values at sample_timesSameSame
reconstructedNoneNoneNoneNoneInterpolated valuesSame
Key Moments - 3 Insights
Why do we sample the analog signal at discrete times instead of continuously?
Sampling at discrete times converts the continuous signal into a sequence of numbers that computers can store and process, as shown in execution_table steps 3 to 6.
How does reconstruction approximate the original signal from samples?
Reconstruction uses interpolation between samples to estimate values between them, as seen in execution_table step 7 where 'reconstructed' is created by linear interpolation.
What happens if the sampling frequency is too low?
If sampling frequency is too low, the reconstructed signal will not match the original well, causing distortion (aliasing). This is why step 3 sets fs=20 Hz, which is above twice the signal frequency (5 Hz) to avoid aliasing.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 5, what is the value of sample_times?
A20 points evenly spaced from 0 to 0.95 seconds
B1000 points evenly spaced from 0 to 1 second
CSamples of the sine wave at 5 Hz
DInterpolated values between samples
💡 Hint
Check the 'Variable' and 'Value/Result' columns at step 5 in execution_table
At which step does the code create the discrete samples from the analog signal?
AStep 2
BStep 6
CStep 5
DStep 7
💡 Hint
Look for when 'samples' variable is assigned in execution_table
If the sampling frequency fs was decreased to 6 Hz, what would happen to the reconstructed signal?
AIt would perfectly match the original signal
BIt would have more samples
CIt would have aliasing and distortions
DIt would not change
💡 Hint
Refer to key_moments about sampling frequency and aliasing
Concept Snapshot
Sampling and reconstruction:
- Sample analog signal at regular intervals (sampling frequency fs)
- Create discrete samples from continuous signal
- Reconstruct signal by interpolation from samples
- Sampling frequency must be > 2x signal frequency (Nyquist)
- Reconstruction approximates original signal from samples
Full Transcript
Sampling and reconstruction in communication involves converting a continuous analog signal into discrete samples by measuring its value at regular time intervals. This process is called sampling. The discrete samples can then be used to reconstruct an approximation of the original signal using interpolation methods. The sampling frequency must be at least twice the highest frequency in the signal to avoid distortion called aliasing. In the example, a 5 Hz sine wave is sampled at 20 Hz, producing 20 samples over one second. These samples are then used to reconstruct the signal by linear interpolation, closely matching the original. This process is essential in digital communication systems to convert real-world signals into digital data and back.

Practice

(1/5)
1. What is the main purpose of sampling in communication systems?
easy
A. To convert a continuous signal into discrete values
B. To amplify the signal strength
C. To filter out noise from the signal
D. To encrypt the signal for security

Solution

  1. Step 1: Understand the role of sampling

    Sampling takes a continuous-time signal and measures its amplitude at discrete time intervals.
  2. Step 2: Identify the purpose in communication

    This process allows the signal to be represented digitally for processing and transmission.
  3. Final Answer:

    To convert a continuous signal into discrete values -> Option A
  4. Quick Check:

    Sampling = Continuous to discrete conversion [OK]
Hint: Sampling means turning smooth signals into numbers [OK]
Common Mistakes:
  • Confusing sampling with filtering
  • Thinking sampling increases signal strength
  • Mixing sampling with encryption
2. Which of the following is the correct Nyquist sampling rate formula for a signal with maximum frequency f_max?
easy
A. f_s > f_max / 2
B. f_s > 2 * f_max
C. f_s = f_max
D. f_s < f_max / 2

Solution

  1. Step 1: Recall Nyquist theorem

    The Nyquist rate states the sampling frequency must be greater than twice the highest frequency in the signal.
  2. Step 2: Apply to formula

    So, f_s > 2 * f_max ensures no loss of information during sampling.
  3. Final Answer:

    f_s > 2 * f_max -> Option B
  4. Quick Check:

    Nyquist rate = 2 * max frequency [OK]
Hint: Sample faster than twice the highest frequency [OK]
Common Mistakes:
  • Using sampling rate less than max frequency
  • Confusing less than and greater than signs
  • Ignoring the factor of 2 in Nyquist rate
3. Given a continuous signal with maximum frequency 3 kHz, what is the minimum sampling frequency to avoid aliasing? Choose the correct Python code output.
f_max = 3000
f_s = 2 * f_max
print(f_s)
medium
A. 6000
B. 1500
C. 3000
D. 9000

Solution

  1. Step 1: Calculate minimum sampling frequency

    Using Nyquist, minimum sampling frequency is twice the max frequency: 2 * 3000 = 6000 Hz.
  2. Step 2: Check Python code output

    The code multiplies 3000 by 2 and prints 6000, matching the calculation.
  3. Final Answer:

    6000 -> Option A
  4. Quick Check:

    2 * 3000 = 6000 [OK]
Hint: Double the max frequency to get sampling rate [OK]
Common Mistakes:
  • Printing max frequency instead of double
  • Dividing instead of multiplying
  • Confusing units (Hz vs kHz)
4. Identify the error in the following Python code snippet for reconstructing a signal using sinc interpolation:
import numpy as np

def reconstruct_signal(samples, t, T):
    x_recon = 0
    for n in range(len(samples)):
        x_recon += samples[n] * np.sinc((t - n*T))
    return x_recon

# samples = [1, 2, 3], t = 1.5, T = 1
print(reconstruct_signal([1, 2, 3], 1.5, 1))
medium
A. np.sinc argument should be normalized by pi
B. Loop should iterate over t values, not samples
C. x_recon should be initialized as an array, not zero
D. The function should return samples instead of x_recon

Solution

  1. Step 1: Understand np.sinc function

    In numpy, np.sinc(x) = sin(pi*x)/(pi*x), so input is already normalized by pi.
  2. Step 2: Check argument passed to np.sinc

    The code passes (t - n*T) directly, which is correct because np.sinc expects normalized input.
  3. Step 3: Identify error

    Actually, the argument is correct; the error is that x_recon is initialized as 0 (a scalar), but the function expects to handle array inputs for t for vectorized reconstruction.
  4. Step 4: Correct error

    x_recon should be initialized as np.zeros_like(t) if t is an array, but since t is scalar here, initialization is fine.
  5. Step 5: Reconsider options

    np.sinc argument should be normalized by pi says argument should be normalized by pi, but numpy's sinc already does that, so no need to normalize.
  6. Step 6: Final conclusion

    No error in normalization; the code is correct for scalar t. The main issue is if t is array, initialization fails.
  7. Final Answer:

    x_recon should be initialized as an array, not zero -> Option C
  8. Quick Check:

    Accumulator initialization must match output type [OK]
Hint: Remember numpy sinc is normalized by pi already [OK]
Common Mistakes:
  • Assuming np.sinc needs manual pi normalization
  • Initializing accumulator incorrectly for arrays
  • Confusing loop variable roles
5. You have a signal sampled at 8 kHz with maximum frequency 5 kHz. What problem will occur during reconstruction, and how can it be fixed?
hard
A. Signal will be noisy; fix by applying a low-pass filter after sampling
B. Signal will be delayed; fix by adjusting reconstruction timing
C. No problem; sampling rate is sufficient for reconstruction
D. Aliasing will occur; fix by increasing sampling rate above 10 kHz

Solution

  1. Step 1: Compare sampling rate and Nyquist rate

    Nyquist rate = 2 * max frequency = 2 * 5 kHz = 10 kHz. Sampling rate is 8 kHz, which is less than Nyquist rate.
  2. Step 2: Identify consequence of insufficient sampling

    Sampling below Nyquist rate causes aliasing, where higher frequencies appear as lower frequencies, distorting the signal.
  3. Step 3: Determine solution

    To avoid aliasing, increase sampling rate above 10 kHz.
  4. Final Answer:

    Aliasing will occur; fix by increasing sampling rate above 10 kHz -> Option D
  5. Quick Check:

    Sampling rate < Nyquist rate causes aliasing [OK]
Hint: Sample above twice max frequency to avoid aliasing [OK]
Common Mistakes:
  • Assuming 8 kHz is enough for 5 kHz max frequency
  • Confusing noise with aliasing
  • Ignoring Nyquist sampling theorem
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard