Main Content

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

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/N 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 に適しているかどうかを確認するには、半解析的手法を使用する状況を参照してください。

詳細

すべて折りたたむ

半解析的手法を使用する状況

シミュレーションによる性能結果セクションで説明されているモンテカルロ シミュレーションは、さまざまな通信システムの BER を効率的に計算しますが、エラー レートが低い場合 (エラー レートが 10-6 以下の場合など) に膨大な時間がかかることがあります。エラー レートを計算する代替方法として半解析的手法があります。この手法を使用すると、シミュレートされたデータのみを使用する非解析的手法よりも迅速に結果が得られます。

半解析的手法を適用するには、通信システムが次の特性を満たしている必要があります。

  • マルチパス フェージング、量子化、および増幅器の非線形化の効果が、モデル化されるチャネルのノイズの影響に先行している。

  • 受信側が搬送周波数と完全に同期されており、タイミング ジッターが無視できるレベルにある。位相ノイズやタイミング ジッターは低速なプロセスになる場合があるため、通信システムに対する半解析的手法の適用性が低くなる可能性があります。

  • ノイズを含まないシミュレーションの場合、受信信号コンスタレーションに誤りがない。ノイズ以外に起因する歪みは、各信号点を適正な決定領域に保持できる程度に緩やかでなければなりません。たとえば、モデル化されたシステムが受信信号点を適切な決定領域外に配置する位相回転をもつ場合、半解析的手法はシステム パフォーマンスの予測には適していません。

通信システムがこれらの特性を満たさない場合、計算された BER が想定よりも低くなる可能性があります。関数 semianalytic では、モデル化されるチャネルのノイズにガウス ノイズを想定しています。非ガウス ノイズに対して半解析的手法を適用する方法の詳細については、[1]の一般化指数分布に関する説明を参照してください。

半解析的手法を使用するための手順

関数 semianalytic を使用した半解析的手法の実装手順を次に示します。

  1. 少なくとも ML のシンボルを含むメッセージ信号を生成します。M は変調次数、L はシンボルのチャネル インパルス応答の長さです。まず、長さが (log2M)ML の拡張バイナリ疑似ノイズ (PN) シーケンスで始めます。拡張 PN シーケンスは、余分な 0 が追加された PN シーケンスで、1 と 0 の分布を等しくします。

  2. semianalytic でサポートされるいずれかのタイプのベースバンド変調を使って、メッセージ信号をもつ搬送波を変調します。概要については、入力 modtype を参照してください。変調された信号をフィルター処理するために後で使用するオーバーサンプリング係数を使って、矩形パルス整形で結果の信号を整形します。関数 semianalytic を呼び出すときに、この手順の結果を txsig として使用します。

  3. 送信フィルターを使って変調された信号をフィルター処理します。このフィルターは、多くの場合、ルート レイズド コサイン フィルターですが、バタワース、ベッセル、チェビシェフⅠ型またはⅡ型、楕円、あるいはより一般的には FIR または IIR フィルターも使用できます。ルート レイズド コサイン フィルターを使用する場合、そのフィルターをオーバーサンプリングされていない変調信号に使用し、フィルター処理関数でオーバーサンプリング係数を指定します。他のフィルターは矩形パルス整形された信号に適用できます。

  4. フィルター処理された信号をノイズのないチャネルを介して渡します。このチャネルは、マルチパス フェージング効果、位相シフト、増幅器の非線形性、量子化、追加のフィルター処理を含むことができますが、ノイズを含んではいけません。関数 semianalytic を呼び出すときに、この手順の結果を入力 rxsig として使用します。

  5. 送信信号と受信信号、および前の手順で取得した txsigrxsig を指定して、関数 semianalytic を呼び出します。オプションで、入力 numden を使用してカスタムの受信側フィルターを指定したり、入力 EbNo を使用してカスタムの Eb/N0 レベルを指定できます。

参照

[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, pp. 14–22.

バージョン履歴

R2006a より前に導入