このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
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 アプリを開く
MATLAB ツールストリップ: [アプリ] タブの [信号処理と通信] でアプリのアイコンをクリックします。
MATLAB コマンド プロンプト:
bertool
と入力します。
例
[Theoretical] タブを使用した BER の計算
AWGN の 16-QAM リンクの BER 性能について理論的な推定を生成します。
Bit Error Rate Analysis アプリを開きます。
bertool
[Theoretical] タブで、次のパラメーターを指定値に設定します。[Eb/N0 range] を 0:10
に、[Modulation type] を QAM
に、[Modulation order] を 16
に設定します。
[Plot] をクリックして、BER の曲線をプロットします。
[Monte Carlo] タブと MATLAB 関数シミュレーションを使用した 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 の曲線の理論的な上限をプロットに追加します。
Bit Error Rate Analysis アプリで使用するための MATLAB 関数の準備
Template for Simulation Functionトピックに示されているシミュレーション関数テンプレートに、Bit Error Rate Analysis の [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
と Bit 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;
この関数には、アプリを指定するための入力と、アプリが提供する EbNo
、maxNumErrs
および 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
に設定します。
[実行] をクリックします。
Bit Error Rate Analysis アプリで結果が計算されてからプロットされます。この場合、シミュレーションでは EbNo
の各値に対して 5 つの誤りしか必要としなかったので、結果が滑らかな曲線に乗らないように見えます。
BER Figure ウィンドウの一連の点を曲線近似するには、データ ビューアーで [Fit] パラメーターを選択します。
次の図に示すように、Bit Error Rate Analysis アプリによって近似曲線がプロットされます。
Bit Error Rate Analysis アプリを使用したエラー レート シミュレーションのスイープの計算
Bit Error Rate Analysisアプリを使用して、 の関数として BER を計算します。アプリは、MATLAB® 関数および Simulink® モデルのモンテ カルロ シミュレーション、または選択されたタイプの通信システムに対応する理論上の閉形式表現のいずれかにより性能解析を行います。関数 mpsksim.m 内のコードは、アプリの [Monte Carlo] タブから実行できる M-PSK シミュレーションを提供します。
[アプリ] タブから Bit Error Rate Analysis アプリを開くか、または 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
に更新して、このプロセスを繰り返します。たとえば、Bit Error Rate Analysis アプリと BER Figure ウィンドウの図に、M
値の変化の結果が示されます。
Bit Error Rate Analysis アプリを使用した並列 SNR スイープ
Bit Error Rate Analysis アプリのモンテ カルロ処理の既定の構成では、Parallel Computing Toolbox™ ソフトウェアを使用している場合、並列プール処理を自動的に使用して個々の ポイントを処理します。ただしシミュレーション コードの処理では次のようになります。
Copyright 2020 The MathWorks, Inc.
Bit Error Rate Analysis アプリで使用するための Simulink モデルの準備
Bit Error Rate Analysis アプリの [Monte Carlo] タブで実行する Simulink シミュレーション モデルを使用します。Simulink シミュレーション結果の BER のパフォーマンスを理論上の BER の結果と比較します。
モデルの準備
モデルを開くには MATLAB コマンド プロンプトで「doc_bpsk
」と入力します。
doc_bpsk
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
に設定します。
[実行] をクリックします。
Bit Error Rate Analysis アプリで結果が計算されてからプロットされます。
これらのシミュレーション結果を理論上の結果と比較するには、Bit Error Rate Analysis アプリの [Theoretical] タブをクリックし、[Eb/N0 range] を 0:9
に設定します。
[Plot] をクリックします。
Bit Error Rate Analysis アプリによって、BER Figure ウィンドウに前のシミュレーション結果と共に理論曲線がプロットされます。
パラメーター
Eb/N0 range
— Eb/N0 値の範囲
0:18
(既定値) | スカラー | ベクトル
BER を評価する Eb/N0 値の範囲。スカラーまたはベクトルとして指定します。単位は dB です。
例: 5:10
は、[5, 10] の範囲における 1 dB 刻みでの Eb/N0 値の評価を指定します。
Channel type
— BER を評価するチャネルのタイプ
AWGN
(既定値) | Rayleigh
| Rician
BER を評価するチャネルのタイプ。[AWGN]
、[Rayleigh]
または [Rician]
として指定します。[Rayleigh]
および [Rician]
オプションは、フラット フェージング チャネルに対応します。
Modulation type
— 通信リンクの変調タイプ
PSK
(既定値) | DPSK
| OQPSK
| PAM
| QAM
| FSK
| MSK
| CPFSK
通信リンクの変調タイプ。[PSK]
、[DPSK]
、[OQPSK]
、[PAM]
、[QAM]
、[FSK]
、[MSK]
または [CPFSK]
として指定します。
Modulation order
— 通信リンクの変調次数
2
(既定値) | 4
| 8
| 16
| 32
| 64
通信リンクの変調次数。[2]
、[4]
、[8]
、[16]
、[32]
または [64]
として指定します。
Differential encoding
— 入力データの差分符号化
off
(既定値) | on
入力データの差分符号化を有効にするには、このパラメーターをオンにします。
Correlation coefficient
— 相関係数
0
(既定値) | 範囲 [-1, 1] の実数スカラー
相関係数。範囲 [-1, 1] の実数スカラーとして指定します。
依存関係
このパラメーターを有効にするには、[Modulation type] を [FSK]
に設定します。
Modulation index
— 変調指数
0.5
(既定値) | 正の実数のスカラー
変調指数。正の実数スカラーとして指定します。
依存関係
このパラメーターを有効にするには、[Modulation type] を [CPFSK]
に設定します。
Demodulation type
— 入力データの同期復調
on
(既定値) | off
入力データの同期復調を有効にするには、このパラメーターをオンにします。
入力データの非同期復調を有効にするには、このパラメーターをオフにします。
依存関係
このパラメーターを有効にするには、[Modulation type] を [FSK]
または [MSK]
に設定します。
Channel coding
— 理論上の BER の推定時に使用するチャネル符号化タイプ
None (既定値) | Convolutional | Block
理論上の BER の推定時に使用するチャネル符号化タイプ。[None]、[Convolutional] または [Block] として指定します。
Synchronization
— 同期エラー
Perfect synchronization (既定値) | Normalized timing error | RMS phase noise level
復調処理での同期エラー。[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] に設定します。
Decision method
— 復号化判定方法
Hard
(既定値) | Soft
受信したデータを復号化するために使用する復号化判定方法。[Hard]
または [Soft]
として指定します。
依存関係
このパラメーターを有効にするには、[Channel coding] を [Convolutional] に設定するか、[Channel coding] を [Block] に設定し、[Coding type] を [General]
に設定します。
Trellis
— 畳み込み符号のトレリス
poly2trellis(7,[171 133])
(既定値) | 構造体
畳み込み符号のトレリス。構造体変数として指定します。関数 poly2trellis
を使用することによって、この構造体を生成できます。
依存関係
このパラメーターを有効にするには、[Channel coding] を [Convolutional] に設定します。
Coding type
— ブロック符号化タイプ
General
(既定値) | ハミング
| Golay
| Reed-Solomon
BER の評価で使用するブロック符号化タイプ。[General]
、[Hamming]
、[Golay]
または [Reed-Solomon]
として指定します。
依存関係
このパラメーターを有効にするには、[Channel coding] を [Block] に設定します。
N
— コードワード長
正の整数
コードワード長。正の整数として指定します。
依存関係
このパラメーターを有効にするには、[Channel coding] を [Block] に設定し、[Coding type] を [General]
に設定します。
K
— メッセージ長
正の整数
メッセージ長。正の整数で [K] が [N] よりも小さくなるように指定します。
依存関係
このパラメーターを有効にするには、[Channel coding] を [Block] に設定し、[Coding type] を [General]
に設定します。
dmin
— ([N],[K]) ブロック符号の最小距離
正の整数
([N],[K]) ブロック符号の最小距離。正の整数として指定します。
依存関係
このパラメーターを有効にするには、[Channel coding] を [Block] に設定し、[Coding type] を [General]
に設定します。
Eb/N0 range
— Eb/N0 値の範囲
1:0.5:5
(既定値) | スカラー | ベクトル
BER を評価する Eb/N0 値の範囲。スカラーまたはベクトルとして指定します。単位は dB です。
例: 4:2:10
は、[4, 10] の範囲における 2 dB 刻みでの Eb/N0 の評価を指定します。
Simulation environment
— シミュレーション環境
MATLAB (既定値) | Simulink
シミュレーション環境。[MATLAB] または [Simulink] として指定します。
Function name
— MATLAB 関数の名前
viterbisim
(既定値)
モンテカルロ シミュレーションのためにアプリで実行される MATLAB 関数の名前。
依存関係
このパラメーターを有効にするには、[Simulation environment] を [MATLAB] に設定します。
Model name
— Simulink モデルの名前
commgraycode
(既定値)
モンテカルロ シミュレーションのためにアプリで実行される Simulink モデルの名前。
依存関係
このパラメーターを有効にするには、[Simulation environment] を [Simulink] に設定します。
BER variable name
— BER シミュレーション データを含む変数の名前
grayBER
(既定値)
BER シミュレーション データを含む変数の名前。BER シミュレーション データを MATLAB ワークスペースに出力するには、この変数名として To Workspace ブロックの [変数名] パラメーター値を割り当てます。
ヒント
To Workspace ブロックを DSP System Toolbox / Sinks サブライブラリから選択します。詳細については、通信システム シミュレーション用の To Workspace ブロックの構成を参照してください。
依存関係
このパラメーターを有効にするには、[Simulation environment] を [Simulink] に設定します。
Number of errors
— シミュレーションを停止するまでに測定する誤り数
100
(既定値) | 正の整数
シミュレーションを停止するまでに測定する誤り数。正の整数として指定します。通常、正確な BER の推定を生成するには、100 件の誤りを測定すれば十分です。
Number of bits
— シミュレーションを停止するまでに処理するビット数
1e8
(既定値) | 正の整数
シミュレーションを停止するまでに処理するビット数。正の整数として指定します。このパラメーターは、シミュレーションが長時間実行されるのを防ぐために使用します。
メモ
モンテカルロ シミュレーションでは、誤り数またはビット数のいずれかのしきい値に到達すると停止します。
ヒント
[Monte Carlo Simulation] ダイアログ ボックスで [Stop] をクリックするとシミュレーションを停止できます。
バージョン履歴
R2006a より前に導入R2020b: Bit Error Rate Analysis の [Semianalytic] タブは削除済み
Bit Error Rate Analysis アプリの [Semianalytic] タブとその機能は削除されました。半解析的な BER 結果を生成するには、引き続き関数 semianalytic
を使用できます。
たとえば、次のコードは、関数 semianalytic
を使用して BPSK 変調信号の半解析的な BER 結果をプログラムで生成する方法を示しています。
data = [0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0].'; bpskmod = comm.BPSKModulator txSig = rectpulse(bpskmod(data),16); rxSig = rectpulse(bpskmod(data),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 コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)