最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

comm.AWGNChannel

ホワイト ガウス ノイズの入力信号への付加

説明

comm.AWGNChannel は、入力信号にホワイト ガウス ノイズを付加します。

適用可能かつオブジェクトへの入力が可変数のチャネルをもつ場合は、EbNoEsNoSNRBitsPerSymbolSignalPowerSamplesPerSymbol、および Variance の各プロパティはその適用の際、スカラーでなければなりません。

ホワイト ガウス ノイズを入力信号に付加するには、以下の手順に従います。

  1. comm.AWGNChannel オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とは (MATLAB)を参照してください。

作成

説明

awgnchan = comm.AWGNChannel は、加法性ホワイト ガウス ノイズ (AWGN) チャネル System object™ awgnchan を作成します。このオブジェクトは、次に、実数または複素数入力信号にホワイト ガウス ノイズを付加します。

awgnchan = comm.AWGNChannel(Name,Value) は、Name で指定されたプロパティを Value で指定された値に設定して、AWGN チャネルオブジェクト awgnchan を作成します。(Name1,Value1,...,NameN,ValueN) のように、のように、追加の名前と値のペアの引数を任意の順番で指定できます。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計 (MATLAB)を参照してください。

ノイズ レベルの方式。'Signal to noise ratio (Eb/No)''Signal to noise ratio (Es/No)''Signal to noise ratio (SNR)'、または 'Variance' として指定します。詳細は、分散の直接または間接指定のリファレンス ページを参照してください。

データ型: char

ノイズ パワー スペクトル密度 (Eb/No) に対する、ビットあたりのエネルギーの比 (dB 単位)。スカラーまたは 1 行 NC 列のベクトルで指定します。NC は、チャネル数です。

調整可能: Yes

依存関係

このプロパティは、NoiseMethod'Signal to noise ratio (Eb/No)' に設定されている場合に適用されます。

データ型: double

ノイズ パワー スペクトル密度 (Es/No) に対する、シンボルあたりのエネルギーの比 (dB 単位)。スカラーまたは 1 行 NC 列のベクトルで指定します。NC は、チャネル数です。

調整可能: Yes

依存関係

このプロパティは、NoiseMethod'Signal to noise ratio (Es/No)' に設定されている場合に適用されます。

データ型: double

ノイズ パワーに対する信号強度の比 (dB 単位)。スカラーまたは 1 行 NC 列のベクトルで指定します。NC は、チャネル数です。

調整可能: Yes

依存関係

このプロパティは、NoiseMethod'Signal to noise ratio (SNR)' に設定されている場合に適用されます。

データ型: double

シンボルあたりのビット数。正の整数として指定します。

依存関係

このプロパティは、NoiseMethod'Signal to noise ratio (Eb/No)' に設定されている場合に適用されます。

データ型: double

ワット単位の入力信号強度。正のスカラーまたは 1 行 NC 列のベクトルとして指定します。NC は、チャネル数です。オブジェクトは 1 Ω の公称インピーダンスを想定しています。

調整可能: Yes

依存関係

このプロパティは、NoiseMethod'Signal to noise ratio (Eb/No)''Signal to noise ratio (Es/No)' または 'Signal to noise ratio (SNR)' に設定されている場合に適用されます。

データ型: double

シンボルあたりのサンプル数。正の整数または 1 行 NC 列のベクトルとして指定します。NC は、チャネル数です。

依存関係

このプロパティは、NoiseMethod'Signal to noise ratio (Eb/No)'、 または 'Signal to noise ratio (Es/No)' に設定されている場合に適用されます。

データ型: double

ノイズ分散のソース。'Property' または 'Input port' として指定します。

  • VarianceSource'Property' に設定する場合は、Variance プロパティを使用してノイズ分散値を指定します。

  • VarianceSource'Input port' に設定する場合は、関数として呼び出す場合にオブジェクトへの入力を使用して、ノイズ分散値を指定します。

詳細は、分散の直接または間接指定のリファレンス ページを参照してください。

依存関係

このプロパティは、NoiseMethod'Variance' である場合に適用されます。

データ型: char

ホワイト ガウス ノイズの分散。正のスカラーまたは 1 行 NC 列のベクトルとして指定します。NC は、チャネル数です。

調整可能: Yes

依存関係

このプロパティは、NoiseMethod'Variance'、および VarianceSource'Property' に設定されている場合に適用されます。

データ型: double

乱数ストリームのソース。'Global stream' または 'mt19937ar with seed' として指定します。

  • RandomStream'Global stream' に設定すると、このオブジェクトは MATLAB® の既定の乱数ストリームを使用して乱数を生成します。このオブジェクトを使用して再現性のある数を生成するため、MATLAB の既定の乱数ストリームをリセットすることができます。reset(RandStream.getGlobalStream) などのようにします。詳細は、RandStream を参照してください。

  • RandomStream'mt19937ar with seed' に設定すると、正規分布の乱数発生にオブジェクトで mt19937ar アルゴリズムが使用されます。この場合、reset 関数を呼び出すと、乱数ストリームが Seed プロパティの値に再初期化されます。このオブジェクトをリセットすることで、再現性のある数を生成できます。

複素数入力信号の場合、オブジェクトは、次のようにランダム データを作成します。

noise = randn(NS,NC)+1i(randn(NS,NC))
NS は、サンプルの数です。NC は、チャネルの数です。

依存関係

このプロパティは、NoiseMethod'Variance' に設定されている場合に適用されます。

データ型: char

mt19937ar 乱数ストリームの初期シード。非負の整数で指定します。関数 reset を呼び出すたびに、オブジェクトにより mt19937ar 乱数ストリームが Seed の値に再初期化されます。

依存関係

このプロパティは、RandomStream'mt19937ar with seed' に設定した場合に適用されます。

データ型: double

使用法

R2016b より前のバージョンでは、関数 step を使用して System object アルゴリズムを実行します。step に対する引数は作成したオブジェクトであり、この節で示す引数が次に続きます。

たとえば、y = step(obj,x)y = obj(x) は同等の演算を実行します。

説明

outsignal = awgnchan(insignal) は、入力信号に対して、awgnchan として指定されたホワイト ガウス ノイズを付加します。結果は、outsignal に返されます。

outsignal = awgnchan(insignal,var) は、ホワイト ガウス ノイズの分散を指定します。この構文は、NoiseMethod'Variance'、および VarianceSource'Input port' に設定した場合に適用されます。

たとえば、次のようにします。

awgnchan = comm.AWGNChannel('NoiseMethod','Variance','VarianceSource','Input port');
var = 12;
...
outsignal = awgnchan(insignal,var);

入力引数

すべて展開する

入力信号。スカラー、NS 要素のベクトルまたは NS 行 NC 列の行列として指定します。NS は、サンプルの数です。NC は、チャネルの数です。

データ型: double
複素数のサポート: あり

加法性ホワイト ガウス ノイズの分散。正のスカラーまたは 1 行 NC 列のベクトルとして指定します。NC は、チャネル数です。これは、入力信号行列の列数で決まります。

出力引数

すべて展開する

出力信号。insignal と同じ次元で返されます。

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて展開する

既定の構成を使用して、AWGN チャネル System object を作成します。このチャネルを通して信号データを渡します。

AWGN チャネル オブジェクトと信号データを作成します。

awgnchan = comm.AWGNChannel;
insignal = randi([0 1],100,1);

チャネルを通して、入力信号を送信します。

outsignal = awgnchan(insignal);

8–PSK 信号を変調してホワイト ガウス ノイズを付加した後、信号をプロットしてノイズの影響を観察します。

PSK 変調器 System object™ を作成します。PSK 変調器オブジェクトの既定の変調次数は 8 です。

pskModulator = comm.PSKModulator;

信号を変調します。

modData = pskModulator(randi([0 7],2000,1));

変調された信号にホワイト ガウス ノイズを付加するため、AWGN チャネルを通じて信号を渡します。

channel = comm.AWGNChannel('EbNo',20,'BitsPerSymbol',3);

AWGN チャネルを通して信号を送信します。

channelOutput = channel(modData);

ノイズのないデータとノイズのあるデータを散布図にプロットし、ノイズの影響を観察します。

scatterplot(modData)

scatterplot(channelOutput)

EbNo プロパティを 10 dB に変更してノイズを増やします。

channel.EbNo = 10;

変調データを AWGN チャネルを介して渡します。

channelOutput = channel(modData);

チャネル出力をプロットします。増加したノイズの影響が分かります。

scatterplot(channelOutput)

単一チャネルおよびマルチチャネルの信号を AWGN チャネル System object™ を経由して渡します。

単一チャネル入力用に Eb/No 比を設定した AWGN チャネル System object を作成します。この場合、EbNo プロパティはスカラーです。

channel = comm.AWGNChannel('EbNo',15);

ランダム データを生成して QPSK 変調を適用します。

data = randi([0 3],1000,1);
modData = pskmod(data,4,pi/4);

変調データを AWGN チャネルを介して渡します。

rxSig = channel(modData);

ノイズの多いコンスタレーションをプロットします。

scatterplot(rxSig)

2 チャネルの入力データを生成して QPSK 変調を適用します。

data = randi([0 3],2000,2);
modData = pskmod(data,4,pi/4);

変調データを AWGN チャネルを介して渡します。

rxSig = channel(modData);

ノイズの多いコンスタレーションをプロットします。rxSig では、各チャネルは単一の列として表されます。プロットはほとんど同一です。これは、どちらのチャネルにも同じ Eb/No の値が適用されているためです。

scatterplot(rxSig(:,1))
title('First Channel')

scatterplot(rxSig(:,2))
title('Second Channel')

AWGN チャネル オブジェクトを変更して、別の Eb/No の値を各チャネルに適用します。異なる値を適用するには、EbNo プロパティを 1 行 2 列のベクトルに設定します。EbNo プロパティの次元を変更する場合、AWGN チャネル オブジェクトを解放しなければなりません。

release(channel)
channel.EbNo = [10 20];

データを AWGN チャネルを経由して渡します。

rxSig = channel(modData);

ノイズの多いコンスタレーションをプロットします。最初のチャネルは Eb/No の値が低いため、ノイズがかなり多くなります。

scatterplot(rxSig(:,1))
title('First Channel')

scatterplot(rxSig(:,2))
title('Second Channel')

ノイズ分散を、現在の信号入力のチャネル数と等しい長さのスカラーまたは行ベクトルとして適用します。

NoiseMethod プロパティを 'Variance' に設定し、VarianceSource プロパティを 'Input port' に設定して、AWGN チャネル System object™ を作成します。

channel = comm.AWGNChannel('NoiseMethod','Variance', ...
'VarianceSource','Input port');

2 つのチャネルに対してランダム データを生成して、16-QAM 変調を適用します。

data = randi([0 15],10000,2);
txSig = qammod(data,16);

変調データを AWGN チャネルを介して渡します。AWGN チャネル オブジェクトは 2 つのチャネルからのデータを処理します。分散入力は 1 行 2 列のベクトルです。

rxSig = channel(txSig,[0.01 0.1]);

2 つのチャネルのコンスタレーション ダイアグラムをプロットします。2 番目の信号は、分散値が他方の 10 倍であるためノイズが多くなっています。

scatterplot(rxSig(:,1))

scatterplot(rxSig(:,2))

ノイズ分散の入力をスカラーにして手順を繰り返します。どちらのチャネルにも同じ分散が適用されます。コンスタレーション ダイアグラムはほぼ同一です。

rxSig = channel(txSig,0.2);
scatterplot(rxSig(:,1))

scatterplot(rxSig(:,2))

シードを指定する乱数ストリームを使用する場合は、シードを指定して同じ出力を生成します。

AWGN チャネル System object™ を作成します。NoiseMethod プロパティを 'Variance' に、RandomStream プロパティを 'mt19937ar with seed' に、Seed プロパティを 99 に設定します。

channel = comm.AWGNChannel( ...
    'NoiseMethod','Variance', ...
    'RandomStream','mt19937ar with seed', ...
    'Seed',99);

データを AWGN チャネルを経由して渡します。

y1 = channel(zeros(8,1));

もう 1 つ、すべてがゼロのベクトルをチャネルを経由して渡します。

y2 = channel(zeros(8,1));

関数の呼び出し間でシードが変化するため、出力が異なります。

isequal(y1,y2)
ans = logical
   0

関数 reset を呼び出して、AWGN チャネル オブジェクトをリセットします。ランダム データ ストリームが初期シードの 99 にリセットされます。

reset(channel);

すべてがゼロのベクトルを AWGN チャネルを経由して渡します。

y3 = channel(zeros(8,1));

2 つの信号が同一であることを確認します。

isequal(y1,y3)
ans = logical
   1

アルゴリズム

すべて展開する

参照

[1] Proakis, John G. Digital Communications. 4th Ed. McGraw-Hill, 2001.

拡張機能

R2012a で導入