Skip to main content

Add AWGN Directly to PSD in MATLAB

 

In general, we compute the power spectral density (PSD) of a noisy periodic signal. However, in this article, you will learn how to add noise directly to the PSD of a signal. This process is approximately equivalent to adding noise to a clean signal and then computing its PSD. Here, I will discuss both the theoretical background and the MATLAB implementation.

Steps

1. First, compute the Fast Fourier Transform (FFT) of the clean signal. Then, calculate the Power Spectral Density (PSD) from the FFT.

2. In our case, ensure that the PSD is in the linear scale. Next, compute the noise power from the given Signal-to-Noise Ratio (SNR) using:

    noise_power = signal power / linear SNR
    

3. Then, generate Additive White Gaussian Noise (AWGN) using the formula:

    AWGN noise = sqrt(noise_power) * randn
    

      where randn generates a Gaussian-distributed signal with a mean of 0 and a variance of 1.

 

MATLAB Code 

clc; clear; close all;

%% Define Parameters
fs = 1000; % Sampling frequency (Hz)
T = 0.2; % Time period of sine wave (s)
A = 1; % Amplitude
N = 1024; % Number of samples
t = linspace(-0.5, 0.5, N); % Time vector
f_sin = 5; % Frequency of sine wave (Hz)

%% Generate Periodic Sine Wave
sine_wave = A * sin(2 * pi * f_sin * t);

%% Compute PSD using FFT
Xf = fftshift(fft(sine_wave)); % Compute FFT and shift
PSD = abs(Xf).^2 / N; % Compute Power Spectral Density

%% Generate AWGN in Frequency Domain (Method 1)
snr_dB = 20; % SNR in dB
snr_linear = 10^(snr_dB/10); % Convert SNR to linear scale
signal_power = mean(PSD); % Approximate power of the original spectrum
noise_power = signal_power / snr_linear; % Compute noise power
noise_spectrum = sqrt(noise_power) .* (randn(size(PSD)) + 1j*randn(size(PSD))); % AWGN

%% Add AWGN Directly to PSD
noisy_PSD = PSD + abs(noise_spectrum).^2; % Add noise power to PSD

%% Generate AWGN in Time Domain (Method 2)
noise_time = sqrt(noise_power) * randn(size(sine_wave)); % AWGN in time domain
noisy_sine = sine_wave + noise_time; % Add noise to signal

%% Compute PSD of Noisy Sine Wave
Xf_noisy = fftshift(fft(noisy_sine)); % Compute FFT of noisy signal
PSD_noisy = abs(Xf_noisy).^2 / N; % Compute Power Spectral Density

%% Plot Results
freq = linspace(-fs/2, fs/2, N); % Frequency axis

figure;

% Plot Time-Domain Sine Wave
subplot(3,1,1);
plot(t, sine_wave, 'b', 'LineWidth', 1.5); hold on;
plot(t, noisy_sine, 'r', 'LineWidth', 1.2);
xlabel('Time (s)');
ylabel('Amplitude');
title('Sine Wave Before and After AWGN');
legend('Original Sine Wave', 'Noisy Sine Wave');
grid on;

% Plot PSD Comparison (Direct AWGN to PSD)
subplot(3,1,2);
plot(freq, 10*log10(PSD + eps), 'b', 'LineWidth', 1.5); hold on;
plot(freq, 10*log10(noisy_PSD + eps), 'r', 'LineWidth', 1.5);
xlabel('Frequency (Hz)');
ylabel('Power Spectral Density (dB)');
title('AWGN Added Directly to PSD');
legend('Original PSD', 'PSD with Direct AWGN');
grid on;

% Plot PSD Comparison (AWGN in Time Domain)
subplot(3,1,3);
plot(freq, 10*log10(PSD + eps), 'b', 'LineWidth', 1.5); hold on;
plot(freq, 10*log10(PSD_noisy + eps), 'g', 'LineWidth', 1.5);
xlabel('Frequency (Hz)');
ylabel('Power Spectral Density (dB)');
title('PSD: Original vs. PSD from Noisy Sine Wave');
legend('Original PSD', 'PSD from Noisy Signal');
grid on;

Output

 





Copy the MATLAB Code from here 

 

Further Reading 

  1. Periodogram in MATLAB


Contact Us

Name

Email *

Message *

Popular Posts

MATLAB Code for BER performance of QPSK with BPSK, 4-QAM, 16-QAM, 64-QAM, 256-QAM, etc

📘 Overview 🧮 MATLAB Codes 🧮 Online Simulator for Calculating BER of M-ary PSK and QAM 🧮 QPSK vs BPSK and QAM: A Comparison of Modulation Schemes in Wireless Communication 🧮 Are QPSK and 4-PSK same? 📚 Further Reading   QPSK offers double the data rate of BPSK while maintaining a similar bit error rate at low SNR when Gray coding is used. It shares spectral efficiency with 4-QAM and can outperform 4-QAM or 16-QAM in very noisy channels. QPSK is widely used in practical wireless systems, often alongside QAM in adaptive modulation schemes [Read more...] What is the Gray Code? Gray Code: Gray code is a binary numeral system where two successive values differ in only one bit. This property is called the single-bit difference or unit distance code. It is also known as reflected binary code. Let's convert binary 111 to Gray code: Binary bits: B = 1 1 1 Apply the rule: G[0] = B[0] = 1...

FFT Butterfly Method Explained (with Simulations)

4-Point FFT Using Butterfly Method Given: x[n] = {0, 1, 2, 3} Step 1: Split into Even & Odd Even indices: x e = {x[0], x[2]} = {0, 2} Odd indices: x o = {x[1], x[3]} = {1, 3} Step 2: 2-point DFT For any {a, b}: DFT = {a + b, a - b} Even Part (E): {0+2, 0-2} = {2, -2} Odd Part (O): {1+3, 1-3} = {4, -2} Step 3: Combine Using Butterfly X[k] = E[k] + W 4 k O[k] X[k + 2] = E[k] - W 4 k O[k] Twiddle Factors (N=4): W 4 0 = 1, W 4 1 = -j Final Calculations: X[0] = E[0] + W 4 0 O[0] = 2 + (1)(4) = 6 X[2] = E[0] - W 4 0 O[0] = 2 - (1)(4) = -2 X[1] = E[1] + W 4 1 O[1] = -2 + (-j)(-2) = -2 + 2j X[3] = E[1] - W 4 1 O[1] = -2 - (-j)(-2) = -2 - 2j Final Answer: X[k] = {6, -2 + 2j, -2, -2 - 2j} 8-Point FFT Using Butterfly Method Given: x[n] = {0,1,2,3,4,5,6,7} Step 1: Split into Bit-Reversed Order To perform DIT-FFT, split the 8 points into pairs of two: Group A: {x[0], x[4]} = {0, 4}...

MATLAB Code for QPSK Modulation and Demodulation

📘 Overview 🧮 MATLAB Codes 🧮 Theory 🧮 BER performance of QPSK with BPSK, 4-QAM, 16-QAM, 64-QAM, 256-QAM, etc 📚 Further Reading QPSK Passband Signal Generation Spectral Efficiency in QPSK   Quadrature Phase Shift Keying (QPSK) is a digital modulation scheme that conveys two bits per symbol by changing the phase of the carrier signal. Each pair of bits is mapped to one of four possible phase shifts: 0°, 90°, 180°, or 270° 00  ===> 0 degree phase shift of carrier signal 01  ===> 90 degree 11  ===> 180 degree 10  ===> 270 degree   MATLAB Script clc; clear all; close all; clc; M = 4; data = randi([0 (M-1)], 1000, 1); Phase = 0; modData=pskmod(data,M,Phase); figure(1); scatterplot(modData); channelAWGN = 15; rxData2 = awgn(modData, channelAWGN); figure(2); scatterplot(rxData2); demodData = pskdemod(rxData2,M,Phase);   Result data 1 0 2 2 0 2 1 . . . modData -1.0...

UGC NET Electronic Science Previous Year Question Papers with Solutions

Home / Engineering & Other Exams / UGC NET 2026 PYQ ⬇️ Download Papers and Solutions 📋 Exam Pattern 💡 Preparation Tips ❓ FAQs 📊 Exam Highlights: Electronic Science (88) Feature Details Junior Research Fellowship (JRF) ₹37,000 + HRA per month Eligibility M.Sc/M.Tech in Electronics (55%) Validity of Certificate JRF (3 Years) | Lectureship (Lifetime) 📥 Download UGC NET Electronics PDFs Complete collection of previous year question papers, answer keys and explanations for Subject Code 88. Start Downloading 📂 View All Question Papers June 2025 - Question Paper Download PDF June 2025 - Solved Paper + Explanation ...

Online Simulator for ASK, FSK, and PSK Signal Generation

Interactive Digital Signal Processing (DSP) Tutorial and Simulator for ASK, FSK, and BPSK modulation techniques. Try our new Digital Signal Processing Simulator!   •   Interactive ASK, FSK, and BPSK tools updated for 2025. Start Now Digital Modulation Visualizer: ASK, FSK, & BPSK Simulator Learn and visualize binary modulation techniques (ASK, FSK, BPSK) in real-time with adjustable carrier and sampling parameters. Perfect for DSP students and engineers. 📡 ASK Simulator 📶 FSK Simulator 🎚️ BPSK Simulator 📚 More Topics ASK Modulator FSK Modulator BPSK Modulator More Topics 1. ASK (Amplitude Shift Keying) Simulat...

MATLAB Code for OTFS (Orthogonal Time Frequency Space)

MATLAB Code for OTFS (Orthogonal Time Frequency Space) %% Clear workspace clc; clear; close all ; %% Step 1: OTFS Parameters N_delay = 4; % Number of delay bins (rows) N_doppler = 4; % Number of Doppler bins (columns) N_sym = N_delay * N_doppler; modOrder = 4; % QPSK SNR_dB = 20; % Noise level %% Step 2: Generate random data symbols data = randi([0 modOrder-1], N_sym, 1); txSymbols = pskmod(data, modOrder, pi/4); disp( 'Transmitted Delay-Doppler symbols:' ); disp(reshape(txSymbols, N_delay, N_doppler)); %% Step 3: Map Delay-Doppler → Time-Frequency (ISFFT) % ISFFT: Inverse Symplectic Finite Fourier Transform % 1. Take IDFT along Doppler (columns) % 2. Take DFT along Delay (rows) ddSymbols = reshape(txSymbols, N_delay, N_doppler); % Step 3a: IDFT along columns (Doppler) tfGrid = ifft(ddSymbols, N_doppler, 2); %IFFT (accross columns) along Doppler → spreads in time (Delay → Time) %FFT (accross rows)along Delay → spreads in frequency (Delay → Frequency) % Step 3b: DFT along ...

BER vs SNR for M-ary QAM, M-ary PSK, QPSK, BPSK, ...(MATLAB Code + Simulator)

Bit Error Rate (BER) & SNR Guide Analyze communication system performance with our interactive simulators and MATLAB tools. 📘 Theory 🧮 Simulators 💻 MATLAB Code 📚 Resources BER Definition SNR Formula BER Calculator MATLAB Comparison 📂 Explore M-ary QAM, PSK, and QPSK Topics ▼ 🧮 Constellation Simulator: M-ary QAM 🧮 Constellation Simulator: M-ary PSK 🧮 BER calculation for ASK, FSK, and PSK 🧮 Approaches to BER vs SNR Calculation What is Bit Error Rate (BER)? The BER indicates how many corrupted bits are received compared to the total number of bits sent. It is the primary figur...

MIMO Channel Matrix | Rank and Condition Number

MIMO / Massive MIMO MIMO Channel Matrix | Rank and Condition...   The channel matrix in wireless communication is a matrix that describes the impact of the channel on the transmitted signal. The channel matrix can be used to model the effects of the atmospheric or underwater environment on the signal, such as the absorption, reflection or scattering of the signal by surrounding objects. When addressing multi-antenna communication, the term "channel matrix" is used. Let's assume that only one TX and one RX are in communication and there's no surrounding object. Here, in our case, we can apply the proper threshold condition to a received signal and get the original transmitted signal at the RX side. However, in real-world situations, we see signal path blockage, reflections, etc.,  (NLOS paths [↗]) more frequently. The obstruction is typically caused by building walls, etc. Multi-antenna communication was introduced to address this issue. It makes diversity app...