最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

AWGN における LDPC のパフォーマンスの推定

LDPC 符号化され、QPSK 変調されたビット ストリームを AWGN チャネル経由で送信します。次に、誤りの復調、復号化、カウントを行います。

LDPC 符号化器と LDPC 復号化器のペアを作成します。

ldpcEnc = comm.LDPCEncoder;
ldpcDec = comm.LDPCDecoder;

QPSK 変調器、QPSK 復調器および誤り率検出器を作成します。

qpskMod = comm.QPSKModulator('BitInput',true);
qpskDemod = comm.QPSKDemodulator('BitOutput',true,...
    'DecisionMethod','Approximate log-likelihood ratio', ...
    'VarianceSource','Input port');
errorCnt = comm.ErrorRate;

評価する SNR 値のベクトルを作成します。ビット誤り率のベクトルを初期化します。

snrVec = [0 0.2 0.4 0.6 0.65 0.7 0.75 0.8];
ber = zeros(length(snrVec),1);

バイナリ データの 32400 ビット フレームの符号化と変調を行い、AWGN チャネルを通して送信します。次に、ビット誤り率の復調、復号化および推定を行います。

for k = 1:length(snrVec)
    noiseVar = 1/10^(snrVec(k)/10);
    errorStats = zeros(1,3);
    while errorStats(2) <= 200 && errorStats(3) < 5e6
        data = logical(randi([0 1],32400,1));   % Generate binary data
        encData = ldpcEnc(data);                % Apply LDPC encoding
        modSig = qpskMod(encData);              % Modulate
        rxSig = awgn(modSig,snrVec(k));         % Pass through AWGN channel
        demodSig = qpskDemod(rxSig,noiseVar);   % Demodulate
        rxData = ldpcDec(demodSig);             % Decode LDPC
        errorStats = errorCnt(data,rxData);     % Compute error stats
    end
    
    % Save the BER for the current Eb/No and reset the error rate counter
    ber(k) = errorStats(1);
    reset(errorCnt)
end

ビット誤り率をプロットします。

semilogy(snrVec,ber,'-o')
grid
xlabel('SNR (dB)')
ylabel('Bit Error Rate')