MATLAB Code
clc;
clear;
close all;
% Parameters
Rb = 1e6; % Bit rate (1 Mbps)
SNR_dB = 0:2:20; % SNR range in dB
beta_values = [0, 0.2, 0.5, 0.8, 1.0]; % Different roll-off factors
numBits = 1e5; % Number of bits
disp("For different roll-off (β) factors and a symbol rate of 1 MHz:");
% Simulation
BER = zeros(length(beta_values), length(SNR_dB));
for b = 1:length(beta_values)
beta = beta_values(b);
bandwidth = (1 + beta) * (Rb / 2); % Bandwidth calculation
timeBandwidthProduct = (1 + beta) / 2; % Time-bandwidth product calculation
fprintf('Beta = %.1f, Bandwidth = %.2f MHz, Time-Bandwidth Product = %.2f\n', beta, bandwidth / 1e6, timeBandwidthProduct);
for s = 1:length(SNR_dB)
snr = 10^(SNR_dB(s) / 10); % Convert dB to linear
EbN0 = snr * Rb / bandwidth; % Adjust for bandwidth
noiseVar = 1 / (2 * EbN0);
% Transmit random BPSK symbols
bits = randi([0, 1], numBits, 1);
symbols = 2 * bits - 1;
noise = sqrt(noiseVar) * randn(numBits, 1);
received = symbols + noise;
detectedBits = received > 0;
% Calculate BER
BER(b, s) = sum(detectedBits ~= bits) / numBits;
end
end
% Plot results
figure;
semilogy(SNR_dB, BER(1, :), 'o-', 'DisplayName', '\beta = 0'); hold on;
semilogy(SNR_dB, BER(2, :), 'x-', 'DisplayName', '\beta = 0.2');
semilogy(SNR_dB, BER(3, :), 's-', 'DisplayName', '\beta = 0.5');
semilogy(SNR_dB, BER(4, :), 'd-', 'DisplayName', '\beta = 0.8');
semilogy(SNR_dB, BER(5, :), '^-', 'DisplayName', '\beta = 1.0');
grid on;
xlabel('SNR (dB)');
ylabel('BER');
title('BER vs SNR for Different Roll-off Factors (\beta)');
legend('Location', 'southwest');
Output
For different roll-off (β) factors and a symbol rate of 1 MHz:
Beta = 0.0, Bandwidth = 0.50 MHz, Time-Bandwidth Product = 0.50
Beta = 0.2, Bandwidth = 0.60 MHz, Time-Bandwidth Product = 0.60
Beta = 0.5, Bandwidth = 0.75 MHz, Time-Bandwidth Product = 0.75
Beta = 0.8, Bandwidth = 0.90 MHz, Time-Bandwidth Product = 0.90
Beta = 1.0, Bandwidth = 1.00 MHz, Time-Bandwidth Product = 1.00