% Add AWGN snr = EbNo_dB(idx) + 10*log10(1); % 1 bit/symbol => EbNo = SNR rxSig = awgn(txSig, snr, 'measured');
% BER calculation ber_sim(idx) = sum(rxBits ~= data) / numBits; end
% Theoretical BER for BPSK ber_theory = qfunc(sqrt(2*10.^(EbNo_dB/10)));
% BPSK Simulation in AWGN EbNo_dB = 0:2:10; % Energy per bit to noise PSD ratio (dB) numBits = 1e5; % Number of bits ber_sim = zeros(size(EbNo_dB)); for idx = 1:length(EbNo_dB) data = randi([0 1], numBits, 1); % Random bits % BPSK mapping: 0 -> -1, 1 -> +1 txSig = 2*data - 1;
% Decision: >0 -> 1, <0 -> 0 rxBits = rxSig > 0;
% Plot results figure; semilogy(EbNo_dB, ber_sim, 'bo-', EbNo_dB, ber_theory, 'r*-'); grid on; xlabel('Eb/No (dB)'); ylabel('BER'); legend('Simulated BPSK', 'Theoretical BPSK'); title('BER Performance of BPSK in AWGN');