You are on page 1of 2

Exp No: MULTIBAND OFDM DEMODULATION

Program:
clc;
clearall;
closeall;
% Parameters
N = 2048; % Number of OFDM subcarriers
numSymbols = 10; % Number of OFDM symbols
SNR = 20; % Signal-to-Noise Ratio for AWGN
% Create 3 distinct frequency bands
bandWidth = N/4;
band1 = (randi([0, 1], bandWidth, numSymbols) * 2 - 1) + 1i * (randi([0, 1], bandWidth, numSymbols) * 2 - 1);
band2 = (randi([0, 1], bandWidth, numSymbols) * 2 - 1) + 1i * (randi([0, 1], bandWidth, numSymbols) * 2 - 1);
band3 = (randi([0, 1], bandWidth, numSymbols) * 2 - 1) + 1i * (randi([0, 1], bandWidth, numSymbols) * 2 - 1);
% Create a multiband signal
multiband_signal = zeros(N, numSymbols);
multiband_signal(1:bandWidth, :) = band1;
multiband_signal(N/2+1:N/2+bandWidth, :) = band2;
multiband_signal(N-bandWidth+1:end, :) = band3;
% OFDM Modulation
ofdm_signal = customOFDMMod(multiband_signal, N);
% Add Noise
noisy_ofdm_signal = awgn(ofdm_signal, SNR, 'measured');
% OFDM Demodulation
demod_signal = customOFDMDemod(noisy_ofdm_signal, N);
% Extract bands from the demodulated signal
demod_band1 = demod_signal(1:bandWidth, :);
demod_band2 = demod_signal(N/2+1:N/2+bandWidth, :);
demod_band3 = demod_signal(N-bandWidth+1:end, :);
% Visualization
figure;
% Original Band 1
subplot(3, 2, 1);
plot(abs(band1(:, 1)));
title('Original Band 1');
xlabel('Subcarrier Index');
ylabel('Amplitude');
% Demodulated Band 1
subplot(3, 2, 2);
plot(abs(demod_band1(:, 1)));
title('Demodulated Band 1');
xlabel('Subcarrier Index');
ylabel('Amplitude');
% Original Band 2
subplot(3, 2, 3);
plot(abs(band2(:, 1)));
title('Original Band 2');
xlabel('Subcarrier Index');
ylabel('Amplitude');
% Demodulated Band 2
subplot(3, 2, 4);
plot(abs(demod_band2(:, 1)));
title('Demodulated Band 2');
xlabel('Subcarrier Index');
ylabel('Amplitude');
% Original Band 3
subplot(3, 2, 5);
plot(abs(band3(:, 1)));
title('Original Band 3');
xlabel('Subcarrier Index');
ylabel('Amplitude');
% Demodulated Band 3
subplot(3, 2, 6);
plot(abs(demod_band3(:, 1)));
title('Demodulated Band 3');
xlabel('Subcarrier Index');
ylabel('Amplitude');
% Function for OFDM Modulation
functiony = customOFDMMod(x, N)
% Assume CP length of 25% of the OFDM block size
CP_length = N / 4;
% IFFT
y_withoutCP = ifft(x, N, 1);
% Add CP
y = [y_withoutCP(end - CP_length + 1 : end, :); y_withoutCP];
end
% Function for OFDM Demodulation
functiony = customOFDMDemod(x, N)
% Assume CP length of 25% of the OFDM block size
CP_length = N / 4;
% Remove CP
x_withoutCP = x(CP_length + 1 : end, :);
% FFT
y = fft(x_withoutCP, N, 1);
end

OUTPUR:

You might also like