求问 为什么这个程序无法实现BPSK经过瑞利信道误码率与实际误码率的对比曲线呢?哪里错了呢
clc
clear all
mod = comm.BPSKModulator;
demod = comm.BPSKDemodulator;
chan = comm.RayleighChannel( ...
SampleRate=1e4, ...
MaximumDopplerShift=100);
awgnChan = comm.AWGNChannel( ...
NoiseMethod='Signal to noise ratio (SNR)');
errorCalc = comm.ErrorRate;
M = 2; % BPSK modulation order
tx = randi([0 M-1],50000,1); % Generate a random bit stream
dpskSig = mod(tx);
fadedSig = chan(dpskSig);
SNR = 0:2:20;
numSNR = length(SNR);
berVec = zeros(3, numSNR);
for n = 1:numSNR
awgnChan.SNR = SNR(n);
rxSig = awgnChan(fadedSig);
rx = demod(rxSig);
reset(errorCalc)
berVec(:,n) = errorCalc(tx,rx);end
BER = berVec(1,:);
BERtheory = berfading(SNR,'psk',M,1);
semilogy(SNR,BERtheory,'b-',SNR,BER,'r*');
legend('Theoretical BER','Empirical BER');
xlabel('SNR (dB)');
ylabel('BER');
title('Binary BPSK over Rayleigh Fading Channel');
```bash
```