Digital modulation changes digital data into signals that can travel over wires or air. It helps send information like voice or text clearly and efficiently.
Digital modulation (ASK, FSK, PSK) in Signal Processing
ModulatedSignal = CarrierSignal * DataSignal (for ASK) ModulatedSignal = sin(2πf_c t + DataPhase) (for PSK) ModulatedSignal = sin(2πf(t) t) (for FSK)
ASK changes the amplitude (height) of the carrier wave based on data.
FSK changes the frequency (speed of wave cycles) based on data.
PSK changes the phase (shift in wave start) based on data.
ASK: ModulatedSignal = DataBit * CarrierAmplitude * sin(2πf_c t)FSK: ModulatedSignal = sin(2πf_0 t) if bit=0 else sin(2πf_1 t) if bit=1
PSK: ModulatedSignal = sin(2πf_c t + π * bit)This code creates simple ASK, FSK, and PSK signals for a short sequence of bits and plots them. You can see how the wave changes shape for each modulation type.
import numpy as np import matplotlib.pyplot as plt # Parameters fs = 1000 # Sampling frequency f_c = 5 # Carrier frequency T = 1 # Signal duration in seconds t = np.linspace(0, T, fs, endpoint=False) # Data bits to send bits = [0, 1, 0, 1] # Repeat each bit for equal time segments bit_duration = T / len(bits) # Create ASK signal ask_signal = np.array([]) for bit in bits: carrier = np.sin(2 * np.pi * f_c * np.linspace(0, bit_duration, int(fs * bit_duration), endpoint=False)) ask_signal = np.concatenate((ask_signal, bit * carrier)) # Create FSK signal f0, f1 = 3, 8 # Frequencies for 0 and 1 fsk_signal = np.array([]) for bit in bits: freq = f0 if bit == 0 else f1 signal = np.sin(2 * np.pi * freq * np.linspace(0, bit_duration, int(fs * bit_duration), endpoint=False)) fsk_signal = np.concatenate((fsk_signal, signal)) # Create PSK signal psk_signal = np.array([]) for bit in bits: phase = 0 if bit == 0 else np.pi signal = np.sin(2 * np.pi * f_c * np.linspace(0, bit_duration, int(fs * bit_duration), endpoint=False) + phase) psk_signal = np.concatenate((psk_signal, signal)) # Plot all signals plt.figure(figsize=(12, 8)) plt.subplot(3,1,1) plt.title('ASK Signal') plt.plot(np.linspace(0, T, fs), ask_signal) plt.ylim(-1.5, 1.5) plt.subplot(3,1,2) plt.title('FSK Signal') plt.plot(np.linspace(0, T, fs), fsk_signal) plt.ylim(-1.5, 1.5) plt.subplot(3,1,3) plt.title('PSK Signal') plt.plot(np.linspace(0, T, fs), psk_signal) plt.ylim(-1.5, 1.5) plt.tight_layout() plt.show()
Digital modulation helps send data over noisy channels by changing wave properties.
ASK is simple but less resistant to noise than FSK or PSK.
PSK is widely used in modern communication for its efficiency and noise resistance.
Digital modulation changes carrier waves to represent data bits.
ASK changes amplitude, FSK changes frequency, PSK changes phase.
These methods help send digital data over different communication channels.
Practice
Solution
Step 1: Understand modulation types
ASK changes the amplitude of the carrier wave to represent data bits, while FSK changes frequency and PSK changes phase.Step 2: Match modulation to description
The question asks for the technique that changes amplitude, which is ASK.Final Answer:
Amplitude Shift Keying (ASK) -> Option BQuick Check:
Amplitude change = ASK [OK]
- Confusing ASK with FSK or PSK
- Choosing PCM which is not a modulation technique
- Mixing phase and amplitude changes
Solution
Step 1: Understand FSK signal generation
FSK uses one frequency for bit 0 and another for bit 1, so the signal switches frequency based on the bit.Step 2: Check syntax for conditional frequency
signal = np.sin(2 * np.pi * (f1 if bit == 0 else f2) * t) uses a conditional expression to select frequency based on bit, which is correct for FSK.Final Answer:
signal = np.sin(2 * np.pi * (f1 if bit == 0 else f2) * t) -> Option DQuick Check:
Conditional frequency selection = signal = np.sin(2 * np.pi * (f1 if bit == 0 else f2) * t) [OK]
- Adding two sine waves instead of switching frequency
- Multiplying sine waves which is incorrect
- Using cosine instead of sine without reason
import numpy as np t = np.linspace(0, 1, 5) bits = [0, 1] phase0 = 0 phase1 = np.pi signal = np.array([np.cos(2 * np.pi * 1 * t + (phase0 if bit == 0 else phase1)) for bit in bits]) print(signal)
Solution
Step 1: Calculate cosine values for bit 0
For bit 0, phase = 0, t = np.linspace(0,1,5) = [0, 0.25, 0.5, 0.75, 1], angles = 2πt = [0, π/2, π, 3π/2, 2π], cos = [1, 0, -1, 0, 1].Step 2: Calculate cosine values for bit 1
For bit 1, phase = π, angles = 2πt + π, cos(θ + π) = -cos(θ) = [-1, 0, 1, 0, -1].Final Answer:
[[ 1. 0. -1. 0. 1.] [-1. 0. 1. 0. -1.]] -> Option AQuick Check:
PSK phase shift: cos(θ + π) = -cos(θ) [OK]
- Confusing phase shift effect on cosine
- Misinterpreting array shape or values
- Ignoring phase addition in cosine
import numpy as np bit = 0 t = np.linspace(0, 1, 100) f = 5 signal = np.sin(2 * np.pi * f * t) if bit == 1 else 0 print(signal)
Solution
Step 1: Identify the error in conditional assignment
If bit == 1, signal is an array from np.sin, else signal is scalar 0, causing inconsistent types.Step 2: Fix by using array of zeros
Replace 0 with np.zeros_like(t) to keep signal as an array in both cases.Final Answer:
Error: signal is assigned a scalar 0 instead of an array; fix by replacing 0 with np.zeros_like(t) -> Option AQuick Check:
Consistent array types needed = Error: signal is assigned a scalar 0 instead of an array; fix by replacing 0 with np.zeros_like(t) [OK]
- Using scalar 0 causing type mismatch
- Casting t to int which is unnecessary
- Ignoring conditional expression structure
Solution
Step 1: Analyze noise tolerance requirements
The system must be robust to amplitude noise, so modulation should not rely on amplitude changes.Step 2: Match modulation to noise tolerance
FSK changes frequency, which is less affected by amplitude noise, making it suitable. ASK changes amplitude and is sensitive to amplitude noise. PSK changes phase and can be sensitive to frequency noise.Final Answer:
FSK, because it changes frequency which is less affected by amplitude noise -> Option CQuick Check:
Amplitude noise robustness = FSK [OK]
- Choosing ASK despite amplitude noise sensitivity
- Confusing phase noise sensitivity with frequency noise
- Misunderstanding modulation noise robustness
Ready to prove it?
Pass the test and this pattern moves unknown
