Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Bit Error Rate Analysis

通信システムの BER 性能の解析

説明

Bit Error Rate Analysis アプリは、ビット エラー レート (BER) をビットあたりのエネルギー対ノイズ パワー スペクトル密度比 (Eb/N0) の関数として計算します。このアプリを使って次のことを実行できます。

  • 次を利用して、通信システムに対する BER データの作成と性能解析を行う。

    • MATLAB® 関数および Simulink® モデルのモンテカルロ シミュレーション。

    • 選択されたタイプの通信システムに対応する理論上の閉形式表現。

    • MATLAB シミュレーション関数または Simulink モデルに含まれるシステムの実行。システムをシミュレートする関数またはモデルを作成した後、Bit Error Rate Analysis アプリは選択された Eb/N0 の値について反復し、結果を集める。

  • 1 つ以上の BER データ セットを 1 つの座標軸上にプロットする。シミュレーション データを、理論上の結果あるいは通信システムの一連のモデルからのシミュレーション データとグラフで比較できます。

  • 一連のシミュレーションデータを曲線近似する。

  • シミュレーション データの信頼度をプロットする。

  • 他の処理を実行するために BER データを MATLAB ワークスペースまたはファイルに送る。

詳細については、Analyze Performance with Bit Error Rate Analysis Appを参照してください。

Bit Error Rate Analysis app

Bit Error Rate Analysis アプリを開く

  • MATLAB ツールストリップ: [アプリ] タブの [信号処理と通信] でアプリのアイコンをクリックします。

  • MATLAB コマンド プロンプト: bertool と入力します。

すべて展開する

AWGN の 16-QAM リンクの BER 性能について理論的な推定を生成します。

Bit Error Rate Analysis アプリを開きます。

bertool

BER Analysis app mask

[Theoretical] タブで、次のパラメーターを指定値に設定します。[Eb/N0 range]0:10 に、[Modulation type]QAM に、[Modulation order]16 に設定します。

[Plot] をクリックして、BER の曲線をプロットします。

カスタムの MATLAB 関数を使用して BER をシミュレーションします。既定では、viterbisim.m シミュレーションが使用されます。

Bit Error Rate Analysis アプリを開きます。

bertool

[Monte Carlo] タブで、[Eb/N0 range] パラメーターを 1:.5:6 に設定します。[Run] をクリックしてシミュレーションを実行し、BER の推定値をプロットします。

[Theoretical] タブで、[Eb/N0 range]1:6 に設定し、[Modulation order][4] に設定します。[Convolutional] を選択して、畳み込み符号化を有効にします。[Plot] をクリックして、BER の曲線の理論的な上限をプロットに追加します。

Template for Simulation Functionトピックに示されているシミュレーション関数テンプレートに、Bit Error Rate Analysis[Monte Carlo] タブで実行するコードを追加します。

関数の準備

Template for Simulation Functionトピックからのテンプレートを MATLAB エディターの新しい MATLAB ファイルにコピーします。ファイル名 bertool_simfcn を使用してファイルを MATLAB パス上のフォルダーに保存します。

パラメーターを初期化するかシミュレーションで使用されるオブジェクトを作成するコード行を、Set up initial parameters とマークされたテンプレートの位置に置きます。このコードは、シミュレーション変数をテンプレートの入力引数にマッピングします。たとえば、snrEbNo にマッピングされます。

% Set up initial parameters.
siglen = 1000; % Number of bits in each trial
M = 2;         % DBPSK is binary
snr = EbNo;    % Because of binary modulation

% Create an ErrorRate calculator System object to compare 
% decoded symbols to the original transmitted symbols.
errorCalc = comm.ErrorRate;

コア シミュレーション タスクのためのコードを Proceed with simulation とマークされたテンプレートの位置に置きます。このコードには、すべての設定作業が実行された後のコア シミュレーション タスクが含まれます。

    msg = randi([0,M-1],siglen,1); % Generate message sequence
    txsig = dpskmod(msg,M);        % Modulate
    hChan.SignalPower = ...        % Calculate and assign signal power
        (txsig'*txsig)/length(txsig); 
    rxsig = awgn(txsig,snr,'measured'); % Add noise
    decodmsg = dpskdemod(rxsig,M);      % Demodulate
    berVec = errorCalc(msg,decodmsg);   % Calculate BER
    totErr = totErr + berVec(2);
    numBits = numBits + berVec(3);

これら 2 つのコード セクションをテンプレートに挿入すると、関数 bertool_simfcnBit Error Rate Analysis アプリの互換性が確保されます。結果のコードは次のコード セグメントのようになります。

function [ber,numBits] = bertool_simfcn(EbNo,maxNumErrs,maxNumBits,varargin)
%
%   See also BERTOOL and VITERBISIM.

% Copyright 2020 The MathWorks, Inc.

% Initialize variables related to exit criteria.
totErr = 0;  % Number of errors observed
numBits = 0; % Number of bits processed

% --- Set up the simulation parameters. ---
% --- INSERT YOUR CODE HERE.
% Set up initial parameters.
siglen = 1000; % Number of bits in each trial
M = 2;         % DBPSK is binary.
snr = EbNo;    % Because of binary modulation
% Create an ErrorRate calculator System object to compare
% decoded symbols to the original transmitted symbols.
errorCalc = comm.ErrorRate;

% Simulate until the number of errors exceeds maxNumErrs
% or the number of bits processed exceeds maxNumBits.
while((totErr < maxNumErrs) && (numBits < maxNumBits))

    % Check if the user clicked the Stop button of BERTool.
    if isBERToolSimulationStopped(varargin{:})
      break
    end
  
    % --- Proceed with the simulation.
    % --- Update totErr and numBits.
    % --- INSERT YOUR CODE HERE.
    msg = randi([0,M-1],siglen,1); % Generate message sequence
    txsig = dpskmod(msg,M);        % Modulate
    hChan.SignalPower = ...        % Calculate and assign signal power
        (txsig'*txsig)/length(txsig); 
    rxsig = awgn(txsig,snr,'measured'); % Add noise
    decodmsg = dpskdemod(rxsig,M);      % Demodulate
    berVec = errorCalc(msg,decodmsg);   % Calculate BER
    totErr = totErr + berVec(2);
    numBits = numBits + berVec(3);
end % End of loop

% Compute the BER.
ber = totErr/numBits;

この関数には、アプリを指定するための入力と、アプリが提供する EbNomaxNumErrs および maxNumBits のスカラー量を指定するための入力があります。関数はアプリの停止コマンドを監視して応答するため、Bit Error Rate Analysis アプリは入力になります。関数 bertool_simfcn ではプロット、曲線近似、信頼区間に関連するコードが除外されています。これは、Bit Error Rate Analysis アプリによってコードを記述せずに同様のタスクを対話形式で行うことができるためです。

準備した関数の使用

Bit Error Rate Analysis アプリで bertool_simfcn を実行します。

Bit Error Rate Analysis アプリを開いてから、[Monte Carlo] タブを選択します。

次のパラメーターを指定値に設定します。[Eb/N0 range]0:10 に、[Simulation environment]MATLAB に、[Function name]bertool_simfcn に、[Number of errors]5 に、[Number of bits]1e8 に設定します。

Parameter settings on the Monte Carlo tab of the Bit Error Rate Analysis app.

[実行] をクリックします。

Bit Error Rate Analysis アプリで結果が計算されてからプロットされます。この場合、シミュレーションでは EbNo の各値に対して 5 つの誤りしか必要としなかったので、結果が滑らかな曲線に乗らないように見えます。

DBPSK modulation BER plot generated with number of errors set to five.

BER Figure ウィンドウの一連の点を曲線近似するには、データ ビューアーで [Fit] パラメーターを選択します。

Data set listed in the data viewer pane of the Bit Error Rate Analysis app

次の図に示すように、Bit Error Rate Analysis アプリによって近似曲線がプロットされます。

DBPSK modulation BER plot with fitted curve.

Bit Error Rate Analysisアプリを使用して、Eb/N0 の関数として BER を計算します。アプリは、MATLAB® 関数および Simulink® モデルのモンテ カルロ シミュレーション、または選択されたタイプの通信システムに対応する理論上の閉形式表現のいずれかにより性能解析を行います。関数 mpsksim.m 内のコードは、アプリの [Monte Carlo] タブから実行できる M-PSK シミュレーションを提供します。

[アプリ] タブから Bit Error Rate Analysis アプリを開くか、または MATLAB コマンド ウィンドウで関数 bertool を実行してこのアプリを開きます。

[Monte Carlo] タブで、[Eb/N0 range] パラメーターを 1:1:5 に、[Function name] パラメーターを mpsksim に設定します。

関数 mpsksim を編集するために開き、M=2 を設定し、変更したファイルを保存します。

アプリの [Monte Carlo] タブで [Run] をクリックして、構成された関数 mpsksim.m を実行します。

アプリで一連の Eb/N0 点をシミュレーションしてから、[BER Data Set] フィールドで simulation0 を選択し、M=2 と入力して結果のセットの名前を変更することにより、BER データ セット結果の名前を更新します。BER 図の凡例でラベルが M=2 に更新されます。

関数 mpsksimM の値を M = 4816 に更新して、このプロセスを繰り返します。たとえば、Bit Error Rate Analysis アプリと BER Figure ウィンドウの図に、M 値の変化の結果が示されます。

Bit Error Rate Analysis アプリを使用した並列 SNR スイープ

Bit Error Rate Analysis アプリのモンテ カルロ処理の既定の構成では、Parallel Computing Toolbox™ ソフトウェアを使用している場合、並列プール処理を自動的に使用して個々の Eb/N0 ポイントを処理します。ただしシミュレーション コードの処理では次のようになります。

  • シミュレーション コード内のparfor関数ループはすべて標準forループとして実行される。

  • シミュレーション コード内のparfeval (Parallel Computing Toolbox)関数呼び出しはすべて順次実行される。

  • シミュレーション コード内のspmd (Parallel Computing Toolbox)ステートメント呼び出しはすべて順次実行される。

Copyright 2020 The MathWorks, Inc.

Bit Error Rate Analysis アプリの [Monte Carlo] タブで実行する Simulink シミュレーション モデルを使用します。Simulink シミュレーション結果の BER のパフォーマンスを理論上の BER の結果と比較します。

モデルの準備

モデルを開くには MATLAB コマンド プロンプトで「doc_bpsk」と入力します。

doc_bpsk

Simulink model of BPSK modulation simulation.

MATLAB ワークスペースでパラメーターを初期化し、未定義の変数をブロック パラメーターとして使用しないようにします。

EbNo = 0;
maxNumErrs = 100;
maxNumBits = 1e8;

シミュレーションを実行するたびに Bit Error Rate Analysis アプリで確実に正確な量のノイズが使用されるようにするには、AWGN Channel ブロックのダイアログ ボックスを開いて、[Es/No] パラメーターが EbNo に設定されていることを確認します。

メモ

BPSK 変調の場合、Es/N0 は Eb/N0 と等価です。

各反復に対して Bit Error Rate Analysis アプリで確実に正しい停止条件が使用されるようにするには、次のようにします。

  • Error Rate Calculation ブロックのダイアログ ボックスを開いて、[Target number of errors]maxNumErrs に設定され、[Maximum number of symbols]maxNumBits に設定されていることを確認します。

  • シミュレーション終了時間が Inf に設定されていることを確認します。

Error Rate Calculation ブロックが計算する BER の結果に Bit Error Rate Analysis アプリがアクセスできるようにするには、アプリの [BER variable name] パラメーターが、Error Rate Calculation ブロックの出力に接続する To Workspace ブロックで設定されている [変数名] パラメーターと一致することを確認します。

ヒント

To Workspace ブロックを DSP System Toolbox™ / Sinks サブライブラリから選択します。詳細については、通信システム シミュレーション用の To Workspace ブロックの構成を参照してください。

準備したモデルの使用

Bit Error Rate Analysis アプリで doc_bpsk モデルを実行します。

Bit Error Rate Analysis アプリを開いてから、[Monte Carlo] タブを選択します。

次のパラメーターを指定値に設定します。[Eb/N0 range]0:9 に、[Simulation environment]Simulink に、[Function name]doc_bpsk に、[Number of errors]100 に、[Number of bits]1e8 に設定します。

Parameter settings on the Monte Carlo tab of the Bit Error Rate Analysis app.

[実行] をクリックします。

Bit Error Rate Analysis アプリで結果が計算されてからプロットされます。

BER figure of BSPK modulation.

これらのシミュレーション結果を理論上の結果と比較するには、Bit Error Rate Analysis アプリの [Theoretical] タブをクリックし、[Eb/N0 range]0:9 に設定します。

Theoretical tab on Bit Error Rate Analysis app configured for BPSK modulation.

[Plot] をクリックします。

Bit Error Rate Analysis アプリによって、BER Figure ウィンドウに前のシミュレーション結果と共に理論曲線がプロットされます。

BER figure of BSPK modulation with theoretical results curve.

パラメーター

すべて展開する

Theoretical

BER を評価する Eb/N0 値の範囲。スカラーまたはベクトルとして指定します。単位は dB です。

例: 5:10 は、[5, 10] の範囲における 1 dB 刻みでの Eb/N0 値の評価を指定します。

BER を評価するチャネルのタイプ。[AWGN][Rayleigh] または [Rician] として指定します。[Rayleigh] および [Rician] オプションは、フラット フェージング チャネルに対応します。

通信リンクの変調タイプ。[PSK][DPSK][OQPSK][PAM][QAM][FSK][MSK] または [CPFSK] として指定します。

通信リンクの変調次数。[2][4][8][16][32] または [64] として指定します。

入力データの差分符号化を有効にするには、このパラメーターをオンにします。

相関係数。範囲 [-1, 1] の実数スカラーとして指定します。

依存関係

このパラメーターを有効にするには、[Modulation type][FSK] に設定します。

変調指数。正の実数スカラーとして指定します。

依存関係

このパラメーターを有効にするには、[Modulation type][CPFSK] に設定します。

  • 入力データの同期復調を有効にするには、このパラメーターをオンにします。

  • 入力データの非同期復調を有効にするには、このパラメーターをオフにします。

依存関係

このパラメーターを有効にするには、[Modulation type][FSK] または [MSK] に設定します。

理論上の BER の推定時に使用するチャネル符号化タイプ。[None][Convolutional] または [Block] として指定します。

復調処理での同期エラー。[Perfect synchronization][Normalized timing error] または [RMS phase noise (rad)] として指定します。

  • [Synchronization][Perfect synchronization] に設定すると、復調処理で同期エラーは発生しません。

  • [Synchronization][Normalized timing error] に設定すると、正規化されたタイミング誤差を範囲が [0, 0.5] のスカラーとして設定できます。

  • [Synchronization][RMS phase noise (rad)] に設定すると、RMS 位相ノイズ レベルを非負のスカラーとして設定できます。単位はラジアンです。

依存関係

このパラメーターを有効にするには、[Modulation type][PSK] に、[Modulation order][2] に、[Channel coding][None] に設定します。

受信したデータを復号化するために使用する復号化判定方法。[Hard] または [Soft] として指定します。

依存関係

このパラメーターを有効にするには、[Channel coding][Convolutional] に設定するか、[Channel coding][Block] に設定し、[Coding type][General] に設定します。

畳み込み符号のトレリス。構造体変数として指定します。関数 poly2trellis を使用することによって、この構造体を生成できます。

依存関係

このパラメーターを有効にするには、[Channel coding][Convolutional] に設定します。

BER の評価で使用するブロック符号化タイプ。[General][Hamming][Golay] または [Reed-Solomon] として指定します。

依存関係

このパラメーターを有効にするには、[Channel coding][Block] に設定します。

コードワード長。正の整数として指定します。

依存関係

このパラメーターを有効にするには、[Channel coding][Block] に設定し、[Coding type][General] に設定します。

メッセージ長。正の整数で [K][N] よりも小さくなるように指定します。

依存関係

このパラメーターを有効にするには、[Channel coding][Block] に設定し、[Coding type][General] に設定します。

([N],[K]) ブロック符号の最小距離。正の整数として指定します。

依存関係

このパラメーターを有効にするには、[Channel coding][Block] に設定し、[Coding type][General] に設定します。

Monte Carlo

BER を評価する Eb/N0 値の範囲。スカラーまたはベクトルとして指定します。単位は dB です。

例: 4:2:10 は、[4, 10] の範囲における 2 dB 刻みでの Eb/N0 の評価を指定します。

シミュレーション環境。[MATLAB] または [Simulink] として指定します。

モンテカルロ シミュレーションのためにアプリで実行される MATLAB 関数の名前。

依存関係

このパラメーターを有効にするには、[Simulation environment][MATLAB] に設定します。

モンテカルロ シミュレーションのためにアプリで実行される Simulink モデルの名前。

依存関係

このパラメーターを有効にするには、[Simulation environment][Simulink] に設定します。

BER シミュレーション データを含む変数の名前。BER シミュレーション データを MATLAB ワークスペースに出力するには、この変数名として To Workspace ブロックの [変数名] パラメーター値を割り当てます。

ヒント

To Workspace ブロックを DSP System Toolbox / Sinks サブライブラリから選択します。詳細については、通信システム シミュレーション用の To Workspace ブロックの構成を参照してください。

依存関係

このパラメーターを有効にするには、[Simulation environment][Simulink] に設定します。

シミュレーションを停止するまでに測定する誤り数。正の整数として指定します。通常、正確な BER の推定を生成するには、100 件の誤りを測定すれば十分です。

シミュレーションを停止するまでに処理するビット数。正の整数として指定します。このパラメーターは、シミュレーションが長時間実行されるのを防ぐために使用します。

メモ

モンテカルロ シミュレーションでは、誤り数またはビット数のいずれかのしきい値に到達すると停止します。

ヒント

  • [Monte Carlo Simulation] ダイアログ ボックスで [Stop] をクリックするとシミュレーションを停止できます。

    Monte Carlo Simulation progress dialog box, which has a stop button

バージョン履歴

R2006a より前に導入

すべて展開する