このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
biterr
ビットエラー数とビット エラー レート (BER)
構文
説明
[
は number
,ratio
,individual
] = biterr(___)x
と y
のバイナリ比較の結果を行列 individual
として返します。前の構文の入力引数を任意に組み合わせて指定できます。
例
ビット エラー レートの計算
2 つのバイナリ行列を作成します。
x = [0 0; 0 0; 0 0; 0 0]
x = 4×2
0 0
0 0
0 0
0 0
y = [0 0; 0 0; 0 0; 1 1]
y = 4×2
0 0
0 0
0 0
1 1
ビット誤り数を求めます。
numerrs = biterr(x,y)
numerrs = 2
列方向の誤り数を計算します。
numerrs = biterr(x,y,[],'column-wise')
numerrs = 1×2
1 1
行方向の誤り数を計算します。
numerrs = biterr(x,y,[],'row-wise')
numerrs = 4×1
0
0
0
2
全体の誤り数を計算します。動作は既定の動作と同じです。
numerrs = biterr(x,y,[],'overall')
numerrs = 2
AWGN の 64-QAM のビット エラー レートの推定
ノイズの多い 64-QAM 信号を復調し、Eb/No 値の範囲のビット エラー レート (BER) を推定します。BER の推定値を理論上の値と比較します。
シミュレーション パラメーターを設定します。
M = 64; % Modulation order k = log2(M); % Bits per symbol EbNoVec = (5:15); % Eb/No values (dB) numSymPerFrame = 100; % Number of QAM symbols per frame
EbN0 の値を SNR に変換します。
snrdB =convertSNR(EbNoVec,"ebno","snr",BitsPerSymbol=k);
結果のベクトルを初期化します。
berEst = zeros(size(EbNoVec));
主処理ループには以下のステップを実行します。
バイナリ データを生成して 64 値シンボルに変換します。
データ シンボルを QAM 変調します。
AWGN チャネルを通して、変調された信号を渡します。
受信信号を復調します。
復調したシンボルをバイナリ データに変換します。
ビット誤り数を計算します。
while
ループは、誤りが 200 個検出されるか、1e7 ビットが転送されるまで継続します。
for n = 1:length(snrdB) % Reset the error and bit counters numErrs = 0; numBits = 0; while numErrs < 200 && numBits < 1e7 % Generate binary data and convert to symbols dataIn = randi([0 1],numSymPerFrame*k,1); dataSym = bit2int(dataIn,k); % QAM modulate using 'Gray' symbol mapping txSig = qammod(dataSym,M); % Pass through AWGN channel rxSig = awgn(txSig,snrdB(n),'measured'); % Demodulate the noisy signal rxSym = qamdemod(rxSig,M); % Convert received symbols to bits dataOut = int2bit(rxSym,k); % Calculate the number of bit errors nErrors = biterr(dataIn,dataOut); % Increment the error and bit counters numErrs = numErrs + nErrors; numBits = numBits + numSymPerFrame*k; end % Estimate the BER berEst(n) = numErrs/numBits; end
関数 berawgn
を使用して理論上の BER 曲線を決定します。
berTheory = berawgn(EbNoVec,'qam',M);
BER データの推定値と理論値をプロットします。推定された BER データ点は理論上の曲線とよく一致しています。
semilogy(EbNoVec,berEst,'*') hold on semilogy(EbNoVec,berTheory) grid legend('Estimated BER','Theoretical BER') xlabel('Eb/No (dB)') ylabel('Bit Error Rate')
入力引数
x,y
— 比較のための入力 (個別の引数)
ベクトル | 行列
比較のための入力。非負の整数要素を含むベクトルまたは行列として、個別に引数を指定します。関数は、比較のために x
と y
の各要素を符号なしバイナリ表現に変換します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
k
— 入力要素の最大ビット数
正の整数
x
と y
の入力要素の最大ビット数。正の整数として指定します。x
または y
のいずれかの要素のバイナリ表現に必要なビット数が k
より大きい場合、関数でエラーが発生します。
k
を設定しない場合、関数によって x
と y
の最大要素のバイナリ表現のビット数が設定されます。
データ型: single
| double
flag
— 既定の設定をオーバーライドするフラグ
'overall'
| 'row-wise'
| 'column-wise'
関数の既定の設定をオーバーライドするフラグ。'overall'
、'row-wise'
、または 'column-wise'
を指定します。フラグは、関数が入力 x,y
の要素をどのように比較し、出力をどのように計算するかを指定します。詳細については、アルゴリズムの節を参照してください。
データ型: string
| char
出力引数
number
— ビット誤り数
非負の整数 | 整数ベクトル
ビット誤り数。非負の整数または整数のベクトルとして返されます。
データ型: single
| double
individual
— 個々のバイナリ比較の結果
行列
個々のバイナリ比較の結果。入力 x
と y
のうち大きい方の次元をもつ行列として返されます。各要素には、そのペアの要素で異なっているビット数が指定されます。詳細については、アルゴリズムの節を参照してください。
データ型: single
| double
アルゴリズム
サイズに基づく入力の比較
この関数は、x
と y
のサイズを使用して、それらの要素を比較する順序を決定します。
入力が同じ次元をもつ行列である場合、関数は要素ごとに入力を比較します。この場合、
number
は非負の整数です。たとえば、次の図のケース (a) を参照してください。一方の入力が行列で、もう一方の入力が列ベクトルの場合、関数は行列の各列と列ベクトルを要素ごとに比較します。行列の行数と列ベクトルの長さは等しくなければなりません。つまり、行列の次元が m 行 n 列の場合、列ベクトルの次元は m 行 1 列でなければなりません。たとえば、次の図のケース (b) を参照してください。
一方の入力が行列で、もう一方の入力が行ベクトルの場合、関数は行列の各行と行ベクトルを要素ごとに比較します。行列の列数と行ベクトルの長さは等しくなければなりません。つまり、行列の次元が m 行 n 列の場合、行ベクトルの次元は 1 行 n 列でなければなりません。たとえば、次の図のケース (c) を参照してください。
フラグに基づく入力の比較
次の表は、flag
の異なる値に基づいて出力がどのように計算されるかを示しています。この表で、x
は行列と見なされ、y
のサイズはさまざまです。
y のサイズ | flag の値 | 比較のタイプ | number の値 | ビット総数 |
---|---|---|---|---|
行列 | 'overall' (既定の設定) | 要素ごと | ビット誤り総数 | k と y の要素数の積 |
'row-wise' | x の m 番目の行と y の m 番目の行の比較 | 要素が各行のビット誤りを表す列ベクトル | k と y の要素数の積 | |
'column-wise' | x の m 番目の列と y の m 番目の列の比較 | 要素が各列のビット誤りを表す行ベクトル | k と y の要素数の積 | |
行ベクトル | 'overall' | y と x の各行の比較 | ビット誤り総数 | k と x の要素数の積 |
'row-wise' (既定の設定) | y と x の各行の比較 | 要素が x の各行のビット誤りを表す列ベクトル | k と y のサイズの積 | |
列ベクトル | 'overall' | y と x の各列の比較 | ビット誤り総数 | k と x の要素数の積 |
'column-wise' (既定の設定) | y と x の各列の比較 | 要素が x の各列のビット誤りを表す行ベクトル | k と y のサイズの積 |
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2006a より前に導入
参考
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)