Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

レイズド コサイン フィルターを使ったパルス整形

対になるルート レイズド コサイン整合フィルター処理を使用して 16-QAM 信号のフィルター処理を行います。信号のアイ ダイアグラムおよび散布図をプロットします。AWGN チャネル経由で信号を渡した後にビット誤り数を計算します。

シミュレーション パラメーターを設定します。

M = 16;         % Modulation order
bps = log2(M);  % Bits/symbol
n = 20000;      % Transmitted bits
sps = 4;        % Samples per symbol
EbNo = 10;      % Eb/No (dB)

フィルター パラメーターを設定します。

span = 10;      % Filter span in symbols
rolloff = 0.25; % Rolloff factor

直前に定義したパラメーターを使用してレイズド コサイン送信フィルターおよびレイズド コサイン受信フィルターを作成します。

txfilter = comm.RaisedCosineTransmitFilter( ...
    RolloffFactor=rolloff, ...
    FilterSpanInSymbols=span, ...
    OutputSamplesPerSymbol=sps);

rxfilter = comm.RaisedCosineReceiveFilter( ...
    RolloffFactor=rolloff, ...
    FilterSpanInSymbols=span, ...
    InputSamplesPerSymbol=sps, ...
    DecimationFactor=sps);

レイズド コサイン送信フィルター オブジェクト txFilter のインパルス応答をプロットします。

fvtool(txfilter,Analysis="impulse")

Figure Figure 1: Impulse Response contains an axes object. The axes object with title Impulse Response, xlabel Samples, ylabel Amplitude contains an object of type stem.

整合フィルターによる遅延を計算します。群遅延は、1 つのフィルター全体のフィルター スパンの半分であるため、両方のフィルターのフィルター スパンと等しくなります。シンボルあたりのビット数を掛けてビット単位の遅延を取得します。

filtDelay = bps*span;

エラー レート カウンター System object™ を作成します。ReceiveDelay プロパティを設定して整合フィルターによる遅延が考慮されるようにします。

errorRate = comm.ErrorRate(ReceiveDelay=filtDelay);

バイナリ データを生成します。

x = randi([0 1],n,1);

データを変調します。

modSig = qammod(x,M,InputType="bit");

変調した信号をフィルター処理します。

txSig = txfilter(modSig);

先頭から 1000 個のサンプルのアイ ダイアグラムをプロットします。

eyediagram(txSig(1:1000),sps)

Figure Eye Diagram contains 2 axes objects. Axes object 1 with title Eye Diagram for In-Phase Signal, xlabel Time, ylabel Amplitude contains an object of type line. This object represents In-phase. Axes object 2 with title Eye Diagram for Quadrature Signal, xlabel Time, ylabel Amplitude contains an object of type line. This object represents Quadrature.

EbNo を指定して S/N 比 (SNR) を dB 単位で計算します。関数 awgn を使用して AWGN チャネル経由で送信信号を渡します。

SNR = EbNo + 10*log10(bps) - 10*log10(sps);
noisySig = awgn(txSig,SNR,"measured");

ノイズ信号をフィルター処理し、その散布図を表示します。

rxSig = rxfilter(noisySig);
scatterplot(rxSig)

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers. This object represents Channel 1.

フィルター処理された信号を復調し、誤り統計を計算します。フィルターによる遅延は、errorRateReceiveDelay プロパティによって考慮されています。

z = qamdemod(rxSig,M,OutputType="bit");

errStat = errorRate(x,z);
fprintf('\nBER = %5.2e\nBit Errors = %d\nBits Transmitted = %d\n',...
    errStat)
BER = 1.15e-03
Bit Errors = 23
Bits Transmitted = 19960