ビット エラー レート解析
通信システムの BER 性能の解析
説明
ビット エラー レート解析アプリは、ビット エラー レート (BER) をビットあたりのエネルギー対ノイズ パワー スペクトル密度比 (Eb/N0) の関数として計算します。このアプリを使って次のことを実行できます。
次を利用して、通信システムに対する BER データの作成と性能解析を行う。
MATLAB® 関数および Simulink® モデルのモンテカルロ シミュレーション。
選択されたタイプの通信システムに対応する理論上の閉形式表現。
MATLAB シミュレーション関数または Simulink モデルに含まれるシステムの実行。システムをシミュレートする関数またはモデルを作成した後、ビット エラー レート解析アプリは選択された Eb/N0 の値について反復し、結果を集める。
1 つ以上の BER データ セットを 1 つの座標軸上にプロットする。シミュレーション データを、理論上の結果あるいは通信システムの一連のモデルからのシミュレーション データとグラフで比較できます。
一連のシミュレーションデータを曲線近似する。
シミュレーション データの信頼水準をプロットする。
他の処理を実行するために BER データを MATLAB ワークスペースまたはファイルに送る。
詳細については、Analyze Performance with Bit Error Rate Analysis Appを参照してください。

ビット エラー レート解析 アプリを開く
MATLAB ツールストリップ: [アプリ] タブの [信号処理と通信] でアプリのアイコンをクリックします。
MATLAB コマンド プロンプト:
bertoolと入力します。
例
AWGN 環境下での 16-QAM リンクの BER 性能について理論的な推定を生成します。
ビット エラー レート解析アプリを開きます。
bertool

[Theoretical] タブで、次のパラメーターを指定値に設定します。[Eb/N0 range] を 0:10 に、[Modulation type] を QAM に、[変調次数] を 16 に設定します。
[Plot] をクリックして、BER の曲線をプロットします。

カスタムの MATLAB 関数を使用して BER をシミュレーションします。既定では、viterbisim.m シミュレーションが使用されます。
ビット エラー レート解析アプリを開きます。
bertool
[Monte Carlo] タブで、[Eb/N0 range] パラメーターを 1:.5:6 に設定します。[Run] をクリックしてシミュレーションを実行し、BER の推定値をプロットします。
[Theoretical] タブで、[Eb/N0 range] を 1:6 に設定し、[変調次数] を [4] に設定します。[Convolutional] を選択して、畳み込み符号化を有効にします。[Plot] をクリックして、BER の曲線の理論的な上限をプロットに追加します。

Template for Simulation Functionトピックに示されているシミュレーション関数テンプレートに、ビット エラー レート解析 の [Monte Carlo] タブで実行するコードを追加します。
関数の準備
Template for Simulation Functionトピックからのテンプレートを MATLAB エディターの新しい MATLAB ファイルにコピーします。ファイル名 bertool_simfcn を使用してファイルを MATLAB パス上のフォルダーに保存します。
パラメーターを初期化するかシミュレーションで使用されるオブジェクトを作成するコード行を、Set up initial parameters とマークされたテンプレートの位置に置きます。このコードは、シミュレーション変数をテンプレートの入力引数にマッピングします。たとえば、snr は EbNo にマッピングされます。
% 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_simfcn と ビット エラー レート解析アプリの互換性が確保されます。結果のコードは次のコード セグメントのようになります。
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;
この関数には、アプリを指定するための入力と、アプリが提供する EbNo、maxNumErrs および maxNumBits のスカラー量を指定するための入力があります。関数はアプリの停止コマンドを監視して応答するため、ビット エラー レート解析アプリは入力になります。関数 bertool_simfcn ではプロット、曲線近似、信頼区間に関連するコードが除外されています。これは、ビット エラー レート解析アプリによってコードを記述せずに同様のタスクを対話形式で行うことができるためです。
準備した関数の使用
ビット エラー レート解析アプリで bertool_simfcn を実行します。
ビット エラー レート解析アプリを開いてから、[Monte Carlo] タブを選択します。
次のパラメーターを指定値に設定します。[Eb/N0 range] を 0:10 に、[Simulation environment] を MATLAB に、[Function name] を bertool_simfcn に、[Number of errors] を 5 に、[Number of bits] を 1e8 に設定します。

[実行] をクリックします。
ビット エラー レート解析アプリで結果が計算されてからプロットされます。この場合、シミュレーションでは EbNo の各値に対して 5 つの誤りしか必要としなかったので、結果が滑らかな曲線に乗らないように見えます。

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

次の図に示すように、ビット エラー レート解析アプリによって近似曲線がプロットされます。

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

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

関数 mpsksim を編集するために開き、M=2 を設定し、変更したファイルを保存します。
アプリの [Monte Carlo] タブで [Run] をクリックして、構成された関数 mpsksim.m を実行します。
アプリで一連の 点をシミュレーションしてから、[BER Data Set] フィールドで simulation0 を選択し、M=2 と入力して結果のセットの名前を変更することにより、BER データ セット結果の名前を更新します。BER 図の凡例でラベルが M=2 に更新されます。



関数 mpsksim の M の値を M = 4、8、16 に更新して、このプロセスを繰り返します。たとえば、ビット エラー レート解析アプリと BER Figure ウィンドウの図に、M 値の変化の結果が示されます。


ビット エラー レート解析アプリを使用した並列 SNR スイープ
ビット エラー レート解析アプリのモンテ カルロ処理の既定の構成では、Parallel Computing Toolbox™ ソフトウェアを使用している場合、並列プール処理を自動的に使用して個々の ポイントを処理します。ただしシミュレーション コードの処理では次のようになります。
Copyright 2020 The MathWorks, Inc.
この例では、"ビット エラー レート解析" アプリの [Monte Carlo] タブで Simulink® モデルを実行し、Simulink® のシミュレーション結果の BER 性能と理論上の BER の結果を比較する方法を示します。
モデルとアプリの準備
例を開き、doc_bpsk モデルをコンピューターの作業フォルダーに読み込みます。

ダウンロード先の作業ディレクトリから doc_bpsk モデルを開き、アプリ ギャラリーから "ビット エラー レート解析" アプリを開きます。 の範囲の制御、モデルの読み込み、結果の保存、および各 BER の反復の停止条件の設定を行うパラメーターは、"ビット エラー レート解析" アプリと Simulink® モデルで一致させなければなりません。
アプリの [Monte Carlo] タブで、次のようにします。
[ range] パラメーターを、変数名
EbNoにマッピングします。[誤り数] パラメーターを、変数名
maxNumErrsにマッピングします。[ビット数] パラメーターを、変数名
maxNumBitsにマッピングします。[Simulation environment] で [Simulink] を選択します。[モデル名] で
doc_bspkと入力し、[BER variable name] でBERと入力します。
モデルは、コールバック関数 PreloadFcn を使用して、モデルのブロック パラメーターを設定する変数 EbNo、maxNumErrs、および maxNumBits を初期化します。コールバック関数 PreloadFcn の詳細については、モデル コールバック (Simulink)を参照してください。アプリがモデルを間違いなく制御できるように、モデル内で次のことを確認します。
AWGN Channel ブロックで、[Es/No (dB)] が
EbNoに設定されている。BPSK 変調の場合、 は と等しくなります。Error Rate Calculation ブロックで、[誤りの目標数] が
maxNumErrsに設定され、[シンボルの最大数] がmaxNumBitsに設定されている。To Workspace ブロックで、[変数名] が
BERに設定されている。モデルの [シミュレーション] で、[終了時間] が
Infに設定されている。
準備したモデルの使用
"ビット エラー レート解析" アプリの [Monte Carlo] タブで、次のように設定します。
[ range] を
0:9[誤り数] を
100[ビット数] を
1e8

[実行] をクリックします。ビット エラー レート解析アプリで結果が計算されてからプロットされます。

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

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

パラメーター
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] に、[変調次数] を [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] をクリックするとシミュレーションを停止できます。

バージョン履歴
R2006a より前に導入ビット エラー レート解析アプリの [Semianalytic] タブとその機能は削除されました。半解析的な BER 結果を生成するには、引き続き関数 semianalytic を使用できます。
たとえば、次のコードは、関数 semianalytic を使用して BPSK 変調信号の半解析的な BER 結果をプログラムで生成する方法を示しています。
data = [0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0].'; txSig = rectpulse(pskmod(data,2),16); rxSig = rectpulse(pskmod(data,2),16); % Before receive filter modType = ‘psk’; modOrder = 2; sps = 16; % samples per symbol num = ones(16,1) / 16; % Filter numerator den = 1 % Filter denominator EbNo = 0:18; % dB BER = semianalytic(txSig,rxSig,modType,modOrder,sps,num,den,EbNo); semilogy(EbNo,BER)
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)