Main Content

bsc

バイナリ対称チャネル

説明

ndata = bsc(data,probability) は、指定した誤り確率をもつバイナリ対称チャネルを通じてバイナリ入力信号 data を渡します。チャネルはビット誤りを取り込み、入力 data の各要素を別々に処理します。data は、2 進数の配列または GF(2) のガロア配列でなければなりません。probability は 0 と 1 の間のスカラーでなければなりません。

ndata = bsc(data,probability,streamhandle) は、乱数ストリーム ハンドルを受け入れ、rand を使用して一様なノイズ サンプルを生成します。乱数ストリーム ハンドルを指定するか、または既定の乱数ストリーム オブジェクトに対して関数 reset (RandStream) を使用すると、反復可能なノイズ サンプルを生成できます。詳細については、RandStream を参照してください。

ndata = bsc(data,probability,seed) は、シード値を受け入れます。これは、一様乱数発生器 rand を初期化するためです。反復可能なノイズ サンプルを生成するには、乱数ストリーム入力をリセットしてから bsc を呼び出すか、または同じシード入力を使用します。

[ndata,err] = bsc(___) は、前述の構文のいずれかを使用して、チャネル誤りを含む配列を返します。

すべて折りたたむ

関数bscを使用して、乱数行列のビットに確率 0.15 でビット誤りを取り込みます。

z = randi([0 1],100,100); % Random matrix
nz = bsc(z,.15); % Binary symmetric channel
[numerrs, pcterrs] = biterr(z,nz) % Number and percentage of errors
numerrs = 1509
pcterrs = 0.1509

以下が出力の標準値です。比較的小さいデータ セットでは、ビット誤りのパーセンテージは、ほとんどの試行で正確に 15% になりません。行列 z のサイズが大きい場合には、ビット誤りのパーセンテージは、指定する正確な確率に近くなります。

関数bscを使用して、乱数行列のビットに確率 0.01 でビット誤りを取り込みます。ビタビ復号化器を使用してメッセージ データを復号化します。

ビタビ復号化器のトレリスを定義します。メッセージ データを生成して符号化します。

trel = poly2trellis([4 3],[4 5 17;7 4 2]);
msg = ones(10000,1);

畳み込み符号化器、ビタビ復号化器、誤り率計算機の object を作成します。

hEnc = comm.ConvolutionalEncoder(trel);
hVitDec = comm.ViterbiDecoder(trel, 'InputFormat','hard', 'TracebackDepth',...
    2, 'TerminationMethod', 'Truncated');
hErrorCalc = comm.ErrorRate;

メッセージ データを符号化します。ビット誤りを取り込みます。誤りの合計数を表示します。

code = hEnc(msg);
[ncode,err] = bsc(code,.01);
numchanerrs = sum(sum(err))
numchanerrs = 158

データを復号化し、復号化した後の誤り数をチェックします。

dcode = hVitDec(ncode);
berVec = hErrorCalc(msg, dcode);
ber = berVec(1)
ber = 0.0049
numsyserrs = berVec(2)
numsyserrs = 49

拡張機能

バージョン履歴

R2006a より前に導入