Use more library functions; generalized to 2^k-PSK
[4yp.git] / SNRvsBER_BPSKdiscrete.m
diff --git a/SNRvsBER_BPSKdiscrete.m b/SNRvsBER_BPSKdiscrete.m
deleted file mode 100644 (file)
index 4a6c30d..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-function SNRvsBER_BPSKdiscrete(numBits)
-  if nargin < 1
-    numBits = 1000;
-  end
-
-  if isOctave()
-    pkg load communications
-  end
-
-  %% SNR: Eb/N0
-  snr_db = 0:0.2:10;
-  snr = 10 .^ (snr_db ./ 10);
-
-  %% Eb is assumed to be 1
-  %% noise N ~ Gaussian(mean=0, variance=N0/2)
-  N0 = 1 ./ snr;
-
-  ber = zeros(1, length(snr));
-
-  data = randomPSK(2, numBits);
-
-  for i = 1:length(snr)
-    noisyData = discreteAWGN(data, N0(i));
-    decodedData = decodeNoisyBPSK(noisyData);
-
-    bitErrors = sum(data ~= decodedData);
-    ber(i) = bitErrors / numBits;
-  end
-
-  fig1 = figure(1);
-  clf;
-
-  %% Plot simulated results
-  semilogy(snr_db, ber, 'r', 'LineWidth', 2);
-  hold on;
-
-  %% Plot theoretical curve
-  %% BPSK: bit error when noise N > sqrt(Eb)
-  %%   Pr(N > sqrt(Eb))
-  %% = Pr(Z > sqrt(Eb) / sqrt(N0/2))
-  %% = Q(sqrt(2 * SNR))
-  ber_th = qfunc(sqrt(2 * snr));
-  semilogy(snr_db, ber_th, 'b', 'LineWidth', 1);
-
-  grid on;
-  xlabel('$E_b/N_0$ (dB)');
-  ylabel('BER');
-  legend('Simulated', '$Q\left(\sqrt{2 E_b / N_0}\right)$');
-
-  formatFigure;
-  saveas(gcf, strcat('BPSK_BER_SNR_', num2str(numBits), '.svg'));
-
-end