メインコンテンツ

semianalytic

半解析的手法を使用した BER

説明

関数 semianalytic は、半解析的手法を使用して、指定されたビットあたりのエネルギー対ノイズ パワー スペクトル密度比 (Eb/N0) レベルにおける通信システムのビット エラー レート (BER) を計算します。システムは複素ベースバンド信号 txsig を送信し、ノイズのない複素ベースバンド信号 rxsig を受信します。関数は受信信号 rxsig をフィルター処理してから、各複素数値に対してガウス ノイズ分布を解析的に適用することで、受信された各 IQ シンボルのシンボル エラー確率を決定します。関数は受信信号全体に対する誤り確率を平均し、全体の誤り確率を決定します。それぞれのシンボル エラー確率について、関数はグレイ符号化された信号コンスタレーションを想定して BER を返します。詳細については、半解析的手法を使用する状況を参照してください。

ber = semianalytic(txsig,rxsig,modtype,M,Nsamp) は、送信信号 txsig、ノイズのない受信信号 rxsig、変調タイプ modtype、および変調次数 M におけるシステムの BER を返します。関数は理想的な積分器を使用して rxsig をフィルター処理します。入力 Nsamp は各信号のシンボルあたりのサンプル数です。返される BER 値は、範囲 [0, 20] (dB) の既定の Eb/N0 レベルに対応します。

ber = semianalytic(txsig,rxsig,modtype,M,Nsamp,num,den) は、受信側フィルターのフィルター係数を分子 num と分母 den で多項式の降べきの順に指定します。関数は理想的な積分器の代わりに指定の受信側フィルターを使用して rxsig をフィルター処理します。

ber = semianalytic(___,EbNo) は、前述の構文における入力引数の任意の組み合わせに加え、Eb/N0 レベルを指定します。返される BER 値は、指定した Eb/N0 レベルに対応します。

[ber,avgampl,avgpower] = semianalytic(___) は、受信信号をフィルター処理してシンボル レートでサンプリングした後の平均信号振幅と平均パワーを返します。

すべて折りたたむ

16-QAM 変調信号を使用して、BER 解析の半解析的手法を使用します。半解析的手法で得られたエラー レートと、公開済みの数式により得られ、関数berawgnを使用して計算されたエラー レートの理論値を比較します。

メッセージ信号を生成します。正確な結果を得るには、少なくとも ML の長さの信号が必要です。M は信号の変調次数、L はチャネル インパルス応答の長さです。

M = 16;          % Alphabet size of modulation
L = 1;           % Length of impulse response of channel
msg = [0:M-1 0]; % M-ary message sequence of length greater than M^L

ベースバンド変調を使用して、メッセージ信号を変調します。

modsig = qammod(msg',M);          % Modulate data
Nsamp = 16;
modsig = rectpulse(modsig,Nsamp); % Rectangular pulse shaping

送信側フィルターを適用します。

txsig = modsig;  % No filter in this example

ノイズのないチャネルを介して txsig を渡し、1 度の静的な位相オフセットを適用します。

rxsig = txsig*exp(1i*pi/180);

受信側フィルターを入力引数のペアとして指定します。この場合、numden は理想的な積分器を表します。

num = ones(Nsamp,1)/Nsamp;
den = 1;
EbNo = 0:20;
ber = semianalytic(txsig,rxsig,'qam',M,Nsamp,num,den,EbNo);

比較のために、理論上の BER を計算します。

bertheory = berawgn(EbNo,'qam',M);

計算された BER と理論上の BER をプロットします。理論上のエラー レートと半解析的なエラー レートの差は、16-QAM 信号に追加される位相オフセットによるものです。

semilogy(EbNo,ber,'k*');
hold on; semilogy(EbNo,bertheory,'ro');
title('Semianalytic BER Versus Theoretical BER');
xlabel('E_b/N_o (dB)');
legend('Semianalytic BER with phase offset',...
    'Theoretical BER without phase offset','Location','SouthWest');
hold off;
grid on;

Figure contains an axes object. The axes object with title Semianalytic BER Versus Theoretical BER, xlabel E indexOf b baseline /N indexOf o baseline blank (dB) contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent Semianalytic BER with phase offset, Theoretical BER without phase offset.

入力引数

すべて折りたたむ

送信ベースバンド信号。複素数ベクトルとして指定します。txsig には少なくとも ML のシンボルが必要です。M は信号の変調次数、L はシンボルのチャネル インパルス応答の長さです。この関数で使用する送信ベースバンド信号を生成する方法の詳細については、半解析的手法を使用するための手順を参照してください。

データ型: double
複素数のサポート: あり

ノイズのない受信ベースバンド信号。複素数ベクトルとして指定します。

データ型: double
複素数のサポート: あり

変調タイプ。次の表のオプションのいずれかとして指定します。

modtype の値変調スキーム入力 M の有効値
'dpsk' 差動位相偏移変調 (DPSK) 2 または 4
'msk/diff' 差分符号化による最小偏移変調 (MSK) (従来の MSK に相当)2
'msk/nondiff' 非差分符号化による最小偏移変調 (MSK) (プリコーディングされた MSK に相当)2
'psk/diff' 差分符号化による位相偏移変調 (PSK)2 または 4
'psk/nondiff' 非差分符号化による位相偏移変調 (PSK)2、4、8、16、32 または 64
'oqpsk' オフセット直交位相偏移変調 (OQPSK) 4
'qam' 直交振幅変調 (QAM) 4、8、16、32、64、128、256、512 または 1024

データ型: char | string

変調次数。2 のべき乗として指定します。有効な変調次数の値は、入力 modtype で示しているように、指定した変調タイプに応じて異なります。

データ型: single | double

受信信号と送信信号のシンボルあたりのサンプル数。正の整数として指定します。

データ型: double

多項式の降べきの順の受信側フィルターの分子係数。数値行ベクトルとして指定します。この入力を指定しない場合、関数は num を既定値に設定して理想的な積分器をモデル化します。関数で使用される既定値は、次の表に示すように入力 modtype に基づいて決まります。

modtype の値既定の num の値
'dpsk''psk/diff''psk/nondiff'、または 'qam' ones(Nsamp,1)/Nsamp
'oqpsk''msk/diff'、または 'msk/nondiff'ones(2*Nsamp,1)/(2*Nsamp)

データ型: double

多項式の降べきの順の受信側フィルターの分母係数。数値行ベクトルとして指定します。既定値は理想的な積分器に対応します。

データ型: double

Eb/N0 レベル (dB)。数値スカラーまたは数値ベクトルとして指定します。

データ型: single | double

出力引数

すべて折りたたむ

BER。数値スカラーまたは数値ベクトルとして返されます。関数は、入力 EbNo に指定された Eb/N0 レベルにおける BER を計算します。EbNo がベクトルの場合、出力 ber はサイズが EbNo と同じで、それぞれの Eb/N0 レベルに対応する要素で構成されるベクトルになります。

メモ

出力 ber は次の変調スキームについては BER の上限になります。

  • DQPSK (つまり、入力 modtype'dpsk'、入力 M を 4 に設定した場合)

  • クロス DQPSK (つまり、入力 modtype'qam'、入力 M を完全な正方でない値に設定した場合)。この場合、上限は関数 berawgn のクロス QAM の場合に使用される上限よりも若干厳しくなります。

データ型: double

受信信号をフィルター処理してシンボル レートに間引きした後の I 成分と Q 成分の平均信号振幅。複素数として返されます。

データ型: double
複素数のサポート: あり

受信信号をフィルター処理してシンボル レートでサンプリングした後の平均パワー。数値スカラーとして返されます。

データ型: double

制限

関数 semianalytic には、通信システムに関するいくつかの仮定があります。通信システムが半解析的手法および関数 semianalytic に適しているかどうかを確認するには、半解析的手法を使用する状況を参照してください。

詳細

すべて折りたたむ

参照

[1] Jeruchim, Michel C., Philip Balaban, and K. Sam Shanmugan. Simulation of Communication Systems. Second edition. Boston, MA: Springer US, 2000.

[2] Pasupathy, S. “Minimum Shift Keying: A Spectrally Efficient Modulation.”IEEE® Communications Magazine (July, 1979): 14–22.

バージョン履歴

R2006a より前に導入