Deeper Explanation:
Aspect | OFDM | DFTs-OFDM |
---|---|---|
Signal Type | Multi-carrier | Single-carrier-like |
Process | IFFT of QAM directly | QAM → DFT → IFFT |
PAPR Level | High (due to many carriers adding up constructively) | Low (less fluctuation in amplitude) |
Why PAPR is High | Subcarriers can add in phase, causing spikes | DFT "pre-spreads" data, smoothing it |
Used in | Wi-Fi, LTE downlink | LTE uplink (as SC-FDMA) |
In OFDM, all subcarriers can align constructively → huge peaks → high PAPR.
In DFTs-OFDM, the DFT step spreads energy across subcarriers → smoother waveform.
MATLAB Code
clc; clear; close all;
% Parameters
N = 64; % Number of subcarriers
M = 16; % 16-QAM
numSymbols = 100; % Number of OFDM symbols
% Generate random data and modulate using QAM
data = randi([0 M-1], N*numSymbols, 1);
qamSymbols = qammod(data, M, 'UnitAveragePower', true);
qamSymbols = reshape(qamSymbols, N, numSymbols);
% --- OFDM ---
ofdmSignal = [];
for i = 1:numSymbols
x = qamSymbols(:, i);
ifftOut = ifft(x);
ofdmSignal = [ofdmSignal; ifftOut];
end
% Compute PAPR
paprOFDM = abs(ofdmSignal).^2;
PAPR_OFDM = max(paprOFDM) / mean(paprOFDM);
% --- DFTs-OFDM ---
dftsSignal = [];
for i = 1:numSymbols
x = qamSymbols(:, i);
dftOut = fft(x); % Spread data in frequency
ifftOut = ifft(dftOut); % OFDM modulation
dftsSignal = [dftsSignal; ifftOut];
end
paprDFTs = abs(dftsSignal).^2;
PAPR_DFTs = max(paprDFTs) / mean(paprDFTs);
% --- Display Results ---
fprintf('PAPR (OFDM): %.2f dB\n', 10*log10(PAPR_OFDM));
fprintf('PAPR (DFTs-OFDM): %.2f dB\n', 10*log10(PAPR_DFTs));
% --- Plot Time-Domain Envelopes ---
figure;
subplot(2,1,1);
plot(abs(ofdmSignal));
title('OFDM Time-Domain Signal');
ylabel('|x(t)|'); grid on;
subplot(2,1,2);
plot(abs(dftsSignal));
title('DFTs-OFDM Time-Domain Signal');
xlabel('Sample Index'); ylabel('|x(t)|'); grid on;
web('https://www.google.com/search?q=salimwireless.com+dft%20ofdm', '-browser');
Output
PAPR (OFDM): 10.35 dB
PAPR (DFTs-OFDM): 2.55 dB