このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
レイズド コサイン フィルターを使ったパルス整形
対になるルート レイズド コサイン整合フィルター処理を使用して 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")
整合フィルターによる遅延を計算します。群遅延は、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)
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)
フィルター処理された信号を復調し、誤り統計を計算します。フィルターによる遅延は、errorRate
の ReceiveDelay
プロパティによって考慮されています。
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