このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
AWGN 環境下での符号化率 2/3 の畳み込み符号
この例では、リンクのビット エラー レート対 の曲線を生成します。リンクは AWGN 環境下で 16-QAM 変調および符号化率 2/3 の畳み込み符号を使用します。
変調次数を設定し、シンボルあたりのビット数を計算します。
M = 16; k = log2(M);
符号化率 2/3 の畳み込み符号のトレリスを作成します。トレースバック パラメーターと符号化率パラメーターを設定します。
trellis = poly2trellis([5 4],[23 35 0; 0 5 13]); traceBack = 28; codeRate = 2/3;
畳み込み符号化器およびそれと同等の、連続モードで実行するビタビ復号化器を作成します。
convEncoder = comm.ConvolutionalEncoder(TrellisStructure=trellis); vitDecoder = comm.ViterbiDecoder( ... TrellisStructure=trellis, ... InputFormat='Hard', ... TracebackDepth=traceBack);
エラー レート オブジェクトを作成します。受信機の遅延をトレースバック長の 2 倍に設定します。これは、復号化器による遅延です。
errorRate = comm.ErrorRate(ReceiveDelay=2*traceBack);
シミュレートする 値の範囲を設定し、等価の SNR 値を計算します。ビット エラー レート統計行列を初期化します。
ebnoVec = 0:2:10; snr = convertSNR(ebnoVec,"ebno","snr", ... BitsPerSymbol=k, ... CodingRate=codeRate); errorStats = zeros(length(ebnoVec),3);
次の手順に従ってリンクをシミュレートします。
バイナリ データを生成します。
符号化率 2/3 の畳み込み符号を使用してデータを符号化します。
符号化されたデータ、設定ビット入力、および単位平均パワーを 16-QAM 変調します。
AWGN チャネルを通して信号を渡します。
受信した信号構成ビット出力と単位平均パワーを 16-QAM 復調します。
ビタビ復号化器を使用して、復調した信号を復号化します。
誤り統計を収集します。
for ii = 1:length(ebnoVec) while errorStats(ii,2) <= 100 && errorStats(ii,3) <= 1e7 dataIn = randi([0 1],10000,1); dataEnc = convEncoder(dataIn); txSig = qammod(dataEnc,M, ... InputType='bit',UnitAveragePower=true); rxSig = awgn(txSig,snr(ii),'measured'); demodSig = qamdemod(rxSig,M, ... OutputType='bit',UnitAveragePower=true); dataOut = vitDecoder(demodSig); errorStats(ii,:) = errorRate(dataIn,dataOut); end reset(errorRate) end
関数berawgn
を使用して、前方誤り訂正符号化を行わない場合の理論上の BER 曲線を計算します。
berUncoded_emp = berawgn(ebnoVec','qam',M);
関数bercoding
と符号化率 2/3 の畳み込み符号の距離スペクトルを使用して、前方誤り訂正符号化を使用した場合の理論上の BER 曲線を計算します。関数distspec
は、畳み込み符号の距離スペクトルを計算し、距離スペクトル構造体を出力します。
spect = distspec(trellis,4)
spect = struct with fields:
dfree: 5
weight: [1 6 28 142]
event: [1 2 8 25]
berCoded_emp = bercoding(ebnoVec', ... 'conv','hard',codeRate,spect,'qam',M);
シミュレートした符号化データ、および理論上の符号化していないデータと符号化データの BER 曲線を に対してプロットします。 値が高くなると、誤り訂正符号によるパフォーマンス上のメリットが得られます。シミュレートされた符号化エラー レートの結果は、理論上の符号化結果と良好な相関関係を示しています。
semilogy(ebnoVec,errorStats(:,1),'b*', ... ebnoVec,berUncoded_emp,'c-', ... ebnoVec,berCoded_emp,'r') grid legend('Coded simulated','Uncoded theoretical','Coded theoretical', ... 'Location','southwest') title('16-QAM With and Without Forward Error Correction') xlabel('Eb/N0 (dB)') ylabel('Bit Error Rate')