このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
符号化およびフィルター処理した信号の遅延検出
畳み込み符号化とフィルター処理を行ったリンクの遅延を特定します。遅延を使用して、ビット エラー数を正確に特定します。
QPSK 変調器と復調器のペアを作成します。ビットを処理するオブジェクトを指定します。
qpskmod = comm.QPSKModulator(BitInput=true); qpskdemod = comm.QPSKDemodulator(BitOutput=true);
レイズド コサイン送信フィルターと受信フィルターのペアを作成します。
txfilt = comm.RaisedCosineTransmitFilter; rxfilt = comm.RaisedCosineReceiveFilter;
畳み込み符号化器とビタビ復号化器のペアを作成します。
convEnc = comm.ConvolutionalEncoder;
vitDec = comm.ViterbiDecoder(InputFormat='Hard');
ランダムなバイナリ データを生成します。データを畳み込み符号化します。
txData = randi([0 1],1000,1); encData = convEnc(txData);
符号化したデータを変調します。レイズド コサイン送信フィルターを使用して変調されたデータを渡します。
modSig = qpskmod(encData); txSig = txfilt(modSig);
フィルター処理された信号を AWGN チャネルを通して渡します。
rxSig = awgn(txSig,20,'measured');
受信信号をフィルター処理してから復調します。
filtSig = rxfilt(rxSig); demodSig = qpskdemod(filtSig);
復調したデータを復号化します。
rxData = vitDec(demodSig);
関数 finddelay
を使用して、送受信されたバイナリ データ間の遅延を検出します。
td = finddelay(txData,rxData)
td = 44
計算した遅延が予想された遅延と一致していることを確認します。これは、整合フィルターの群遅延とビタビ復号化器のトレースバック長の和と等しくなります。
tdexpected = ( ... txfilt.FilterSpanInSymbols + rxfilt.FilterSpanInSymbols)/2 + ... vitDec.TracebackDepth; isequal(td,tdexpected)
ans = logical
1
送信したシーケンスの最後の td
ビットを破棄し、受信したシーケンスの最初の td
ビットを破棄して、ビット誤り数を計算します。
numErrors = biterr(txData(1:end-td),rxData(td+1:end))
numErrors = 0