トレリス符号化変調の例
これらの例では、トレリス符号化変調 (TCM) 方式を示します。
QAM TCM の使用によるデータの変調および復調
任意の 4 点コンスタレーションの QAM TCM 変調を使ってノイズを含むデータを変調および復調します。結果の BER を推定します。
[171 133] 生成多項式を使用して、2 つの入力シンボルと 4 つの出力シンボルをもつトレリス構造を定義します。任意の 4 点コンスタレーションを定義します。
qamTrellis = poly2trellis(7,[171 133]); refConst = exp(pi*1i*[1 2 3 6]/4);
qamTrellis
および refConst
を使用して、QAM TCM 変調器と復調器 System object™ のペアを作成します。
qamtcmod = comm.GeneralQAMTCMModulator( ... qamTrellis, ... Constellation=refConst); qamtcdemod = comm.GeneralQAMTCMDemodulator( ... qamTrellis, ... Constellation=refConst);
TracebackDepth
とシンボルあたりのビット数の積に等しい遅延 (ビット単位) をもつエラー レート計算機を作成します。
errorrate = comm.ErrorRate( ... ReceiveDelay=qamtcdemod.TracebackDepth * ... log2(qamTrellis.numInputSymbols));
ランダムなバイナリ データを生成して QAM TCM 変調を適用します。AWGN チャネルを通して信号を渡し、その信号を復調します。誤り統計を収集します。
for counter = 1:10 % Generate binary data data = randi([0 1],500,1); % Modulate modSignal = qamtcmod(data); % Pass through an AWGN channel noisySignal = awgn(modSignal,4); % Demodulate receivedData = qamtcdemod(noisySignal); % Calculate the error statistics errorStats = errorrate(data,receivedData); end
BER とビット エラー数を表示します。
fprintf("Error rate = %5.2e\nNumber of errors = %d\n", ... errorStats(1), errorStats(2))
Error rate = 9.84e-03 Number of errors = 49
ノイズを含む PSK TCM データの復調
8-PSK TCM 変調方式を使用して、AWGN チャネルのデータを変調および復調します。結果のエラー レートを推定します。
入力シンボル 4 つと出力シンボル 8 つをもつトレリス構造体を定義します。
trellis = poly2trellis([5 4],[23 35 0; 0 5 13]);
トレリス t
を使用して、8-PSK TCM 変調器および復調器の System object を作成します。
M = 8; psktcmod = comm.PSKTCMModulator(trellis,ModulationOrder=M); psktcdemod = comm.PSKTCMDemodulator(trellis, ... ModulationOrder=M, ... TracebackDepth=16);
シンボルあたりのビット数の TracebackDepth
倍に等しい遅延 (ビット) をもつエラー レート計算機を作成します。
errRate = comm.ErrorRate( ...
ReceiveDelay=psktcdemod.TracebackDepth*log2(trellis.numInputSymbols));
ランダムなバイナリ データを生成して、それを 8-PSK TCM で変調します。AWGN チャネルを通して変調信号を渡し、その信号を復調します。誤り統計を計算します。
for counter = 1:10 % Transmit frames of 250 2-bit symbols data = randi([0 1],500,1); % Modulate modSignal = psktcmod(data); % Pass through AWGN channel noisySignal = awgn(modSignal,7); % Demodulate receivedData = psktcdemod(noisySignal); % Calculate error statistics errorStats = errRate(data,receivedData); end
BER とビット エラー数を表示します。
fprintf("Error rate = %5.2e\nNumber of errors = %d\n", ... errorStats(1),errorStats(2))
Error rate = 2.44e-02 Number of errors = 121
矩形 16-QAM TCM 変調を使用してデータを変復調する
AWGN チャネルのデータを、矩形 16-QAM TCM を使用して変復調します。ビット エラー レート (BER) を推定します。
QAM TCM 変調器と QAM TCM 復調器の System object を作成します。
rqamtcmod = comm.RectangularQAMTCMModulator; rqamtcdemod = comm.RectangularQAMTCMDemodulator(TracebackDepth=16);
QAM TCM 復調器による遅延を決定します。復調器は、矩形 QAM を使用して変調された TCM 信号を、ビタビ アルゴリズムを使用して復調します。エラー レートの計算でビット エラー レートを正確に計算するには、受信サンプル数と送信サンプル数を一致させなければなりません。シンボルあたりのビットの数、および TCM 復調器内の復号化器のトレースバック長を使用して、システム内の遅延を計算します。
bitsPerSymbol = log2(rqamtcdemod.TrellisStructure.numInputSymbols); delay = rqamtcdemod.TracebackDepth*bitsPerSymbol;
ReceiveDelay
プロパティを delay
に設定して、エラー レート計算機オブジェクトを作成します。
errRate = comm.ErrorRate(ReceiveDelay=delay);
バイナリ データを生成し、それを 16-QAM TCM で変調します。AWGN チャネルを通して信号を渡し、その信号を復調します。誤り統計を計算します。ループは、100 個のビット エラーが検出されるか、合計 1e7 ビットが送信されるまで実行されます。
% Initialize the error results vector. errStats = [0 0 0]; while errStats(2) < 100 && errStats(3) < 1e7 % Transmit frames of 200 3-bit symbols txData = randi([0 1],600,1); % Modulate txSig = rqamtcmod(txData); % Pass through AWGN channel rxSig = awgn(txSig,5); % Demodulate rxData = rqamtcdemod(rxSig); % Collect error statistics errStats = errRate(txData,rxData); end
誤りデータを表示します。
fprintf("Error rate = %4.2e\nNumber of errors = %d\n", ... errStats(1),errStats(2))
Error rate = 2.03e-03 Number of errors = 100
参考
関数
rcosdesign
|qammod
|qamdemod
オブジェクト
comm.RaisedCosineTransmitFilter
|comm.RaisedCosineReceiveFilter
|comm.ConvolutionalEncoder
|comm.ViterbiDecoder
|comm.GeneralQAMTCMModulator
|comm.GeneralQAMTCMDemodulator
|comm.PSKTCMModulator
|comm.PSKTCMDemodulator
|comm.RectangularQAMTCMModulator
|comm.RectangularQAMTCMDemodulator
ブロック
- Raised Cosine Transmit Filter | Raised Cosine Receive Filter | Convolutional Encoder | Viterbi Decoder | M-PSK Modulator Baseband | M-PSK Demodulator Baseband | Rectangular QAM Modulator Baseband | Rectangular QAM Demodulator Baseband | General TCM Encoder | General TCM Decoder | M-PSK TCM Encoder | M-PSK TCM Decoder | Rectangular QAM TCM Encoder | Rectangular QAM TCM Decoder