符号化を使用する AWGN チャネルの Eb/No の構成
この例では、チャネル符号化を採用している通信リンクについてノイズ密度に対するビット エネルギーの比 (Eb/No) を設定する方法を説明します。
リード・ソロモン符号のコードワード長とメッセージ長を指定します。変調次数を指定します。
N = 15; % R-S codeword length in symbols K = 9; % R-S message length in symbols M = 16; % Modulation order bps = log2(M); % Bits per symbol
(15,9) リード・ソロモン符号化器と 16-PSK 変調器を構築します。ビット入力を受け入れるようにオブジェクトを指定します。
rsEncoder = comm.RSEncoder( ... CodewordLength=N, ... MessageLength=K, ... BitInput=true);
対応するリード・ソロモン復号化器のオブジェクトと 16-PSK 復調器のオブジェクトを作成します。
rsDecoder = comm.RSDecoder( ... CodewordLength=N, ... MessageLength=K, ... BitInput=true);
コードワード長に対するメッセージ シンボルの比に基づいてリード・ソロモン符号化率を計算します。
codeRate = K/N;
符号化されていない Eb/No を dB 単位で指定します。符号化率とシンボルあたりのビット数を使用して、符号化されていない Eb/No を、対応する SNR に変換します。
UncodedEbNo = 6; SNR = convertSNR(UncodedEbNo,"ebno","SNR", ... BitsPerSymbol=bps, ... CodingRate=codeRate);
シミュレーションの誤りとビットの総数を設定します。精度を確保するため、十分な数のビット誤りが検出されるまでシミュレーションを実行してください。合計ビット数を使用して、シミュレーションの実行が長くなりすぎないようにします。
totalErrors = 100; totalBits = 1e6;
エラー レート計算機 System object™ を構築し、エラー レート ベクトルを初期化します。
errorRate = comm.ErrorRate; errorVec = zeros(3,1);
シミュレーションを実行して BER を求めます。
while errorVec(2) < totalErrors && errorVec(3) < totalBits % Generate random bits dataIn = randi([0,1],360,1); % Add error correction capability by using the RS (15,9) encoder dataEnc = rsEncoder(dataIn); % Apply 16-PSK modulation txSig = pskmod(dataIn,M,InputType="bit"); % Pass the modulated data through an AWGN channel rxSig = awgn(txSig,SNR); % Demodulate the received signal demodData = pskdemod(rxSig,M,OutputType="bit"); % Decode the demodulated data with the RS (15,9) decoder dataOut = rsDecoder(demodData); % Collect error statistics errorVec = errorRate(dataIn,demodData); end
結果として得られたビット エラー レートを表示します。
ber = errorVec(1)
ber = 0.0935