ドキュメンテーション センター

  • 評価版
  • 製品アップデート

目次

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

comm.AWGNChannel System Object

パッケージ: comm

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

説明

AWGNChannel オブジェクトは、実数または複素数入力信号にホワイト ガウス ノイズを付加します。入力が実数値の信号を使用する場合、このオブジェクトは実数のガウス ノイズを付加し、実数の出力信号を生成します。入力が複素数信号を使用する場合、このオブジェクトは複素数のガウス ノイズを付加し、複素数の出力信号を生成します。

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

構築

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

H = comm.AWGNChannel(Name,Value) は、指定の各プロパティが指定の値に設定された AWGN Channel オブジェクト H を作成します。(Name1,Value1,...,NameN,ValueN) のように、追加の名前/値の組み合わせ引数を任意の順番で指定できます。

プロパティ

NoiseMethod

ノイズ レベル指定方法

ノイズ レベルの指定方法を Signal to noise ratio (Eb/No)Signal to noise ratio (Es/No)Signal to noise ratio (SNR) または Variance のいずれかとして選択します。既定の設定は Signal to noise ratio (Eb/No) です。

EbNo

1 ビットあたりのエネルギー対ノイズ パワー スペクトル密度比 (Eb/No)

Eb/No 率をデシベル単位で指定します。このプロパティは、数値、実数スカラーまたはチャネル数に等しい長さの行ベクトルに設定できます。このプロパティは、NoiseMethod プロパティを Signal to noise ratio (Eb/No) に設定した場合に適用されます。既定の設定は 10 です。このプロパティは調整可能です。

EsNo

1 シンボルあたりのエネルギー対ノイズ パワー スペクトル密度比 (Es/No)

Es/No 率をデシベル単位で指定します。このプロパティは、数値、実数スカラーまたはチャネル数に等しい長さの行ベクトルに設定できます。このプロパティは、NoiseMethod プロパティを Signal to noise ratio (Es/No) に設定した場合に適用されます。既定の設定は 10 です。このプロパティは調整可能です。

SNR

S/N 比 (SNR)

デシベル単位で SNR 値を指定します。このプロパティは、数値、実数スカラーまたはチャネル数に等しい長さの行ベクトルに設定できます。このプロパティは、NoiseMethod プロパティを Signal to noise ratio (SNR) に設定した場合に適用されます。既定の設定は 10 です。このプロパティは調整可能です。

BitsPerSymbol

シンボルあたりのビット数

各入力シンボルあたりのビット数を指定します。このプロパティを、チャネル数と同じ長さの数値、正の整数スカラー、または行ベクトルに設定できます。このプロパティは、NoiseMethod プロパティを Signal to noise ratio (Eb/No) に設定した場合に適用されます。既定は 1 ビットです。

SignalPower

ワット単位の入力信号強度

ワット単位の入力信号の平均二乗強度を指定します。このプロパティを、チャネル数と同じ長さの数値、正の実数スカラー、または行ベクトルに設定できます。このプロパティは、NoiseMethod プロパティを Signal to noise ratio (Eb/No)Signal to noise ratio (Es/No)、または Signal to noise ratio (SNR) に設定した場合に適用されます。既定の設定は 1 です。オブジェクトは 1 Ω の公称インピーダンスを想定しています。このプロパティは調整可能です。

SamplesPerSymbol

Number of samples per symbol

シンボルごとのサンプル数を指定します。このプロパティを、チャネル数と同じ長さの数値、正の整数スカラー、または行ベクトルに設定できます。このプロパティは、NoiseMethod プロパティを Signal to noise ratio (Eb/No) または Signal to noise ratio (Es/No) に設定した場合に適用されます。既定の設定は 1 です。

VarianceSource

ノイズ分散のソース

ノイズ分散のソースを、Property または Input port のいずれかとして指定します。既定の設定は Property です。step メソッドへの入力を使用するノイズ分散値を指定するには、このプロパティを Input port に設定します。Variance プロパティを使用するノイズ分散値を指定するには、このプロパティを Property に設定します。このプロパティは、NoiseMethod プロパティを Variance に設定した場合に適用されます。

Variance

Noise variance

ホワイト ガウス ノイズの分散を指定します。このプロパティを、チャネル数と同じ長さの数値、正の実数スカラー、または行ベクトルに設定できます。このプロパティは、NoiseMethod プロパティを Variance に、VarianceSource プロパティを Property に設定した場合に適用されます。既定の設定は 1 です。このプロパティは調整可能です。

RandomStream

乱数ストリームのソース

乱数ストリームのソースを Global stream または mt19937ar with seed のいずれかに指定します。このプロパティの既定値は Global stream です。

このプロパティを Global stream に設定すると、正規分布の乱数発生に現在のグローバル乱数ストリームが使用されます。

このプロパティを mt19937ar with seed に設定すると、正規分布の乱数発生に mt19937ar アルゴリズムが使用されます。この場合、reset メソッドを呼び出すと、乱数ストリームが Seed プロパティの値に再初期化されます。

Seed

mt19937ar 乱数ストリームの初期シード

mt19937ar 乱数発生器アルゴリズムの初期シードを、倍精度、実数、非負の整数スカラーとして指定します。このプロパティの既定値は 67 です。

このプロパティは、RandomStream プロパティを mt19937ar with seed に設定した場合に適用されます。reset メソッドを呼び出すたびに、オブジェクトにより mt19937ar 乱数ストリームが Seed の値に再初期化されます。

メソッド

clone同一プロパティ値をもつ AWGN チャネルオブジェクトを作成する
getNumInputsstep メソッドへの予想される入力数
getNumOutputsstep メソッドからの出力数
isLocked入力属性と調整不可能なプロパティのロック状態
releaseプロパティ値と入力特性の変更を許可する
resetAWGNChannel System object の状態をリセット
stepホワイト ガウス ノイズの入力信号への付加

すべて展開する

ホワイト ガウス ノイズを 8-PSK 信号に付加

8–PSK 信号を変調してホワイト ガウス ノイズを付加した後、信号をプロットしてノイズの影響を観察します。さらに、結果をマルチチャネルの応答と比較します。

PSK 変調器 System object を作成します。

hMod = comm.PSKModulator;

PSK 変調器の step メソッドを呼び出して、信号を変調します。

modData = step(hMod, randi([0 hMod.ModulationOrder-1], 1000, 1));

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

hAWGN = comm.AWGNChannel('EbNo', 15, ...
'BitsPerSymbol', log2(hMod.ModulationOrder));

AWGN チャネルの step メソッドを呼び出して、AWGN チャネルを通じて信号を送信します。

channelOutput = step(hAWGN, modData);

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

scatterplot(modData)
scatterplot(channelOutput)

EbNo の値を 10 に設定して、ノイズを増やしたマルチチャネル入力を使用します。

hAWGN.EbNo = 10;

step メソッドを呼び出して、信号を変調します。

modData = step(hMod, randi([0 hMod.ModulationOrder-1], 1000, 1));
modData = reshape(modData, 500, 2);

step メソッドを呼び出して、チャネルから出力された信号を取得します。

channelOutput = step(hAWGN, modData);

チャネルの出力をプロットし、ノイズが信号に及ぼす影響を観察します。

scatterplot(channelOutput(:))

サンプル数の異なる 2 つの連続した入力の処理

MATLAB® コマンド ラインで次の構文を入力し、EbNo 比を 1 行 2 列のベクトルに設定した AWGN System object を作成します。

h = comm.AWGNChannel('EbNo', [10 5]);

step メソッドを呼び出して、最初の入力信号を処理します。このオブジェクトは 1 チャネルあたり 128 サンプルを 2 つのチャネルについて処理します。

step(h, ones(128, 2));

step メソッドを呼び出して、2 番目の入力信号を処理します。リソースを解放しないまま、このオブジェクトは 1 チャネルあたりさらに 256 サンプルを 2 つのチャネルについて処理します。

step(h, ones(256, 2))

この例では、各チャネルが処理するサンプル数を変更できます。チャネル数は固定されたままなので、EbNo プロパティの値をベクトルとして指定できます。

サンプル数とチャネル数の異なる 2 つの連続した入力の処理

この例では、入力がスカラーである限りにおいて、調整可能なプロパティの値をサイズの異なる 2 つの入力の間でどのように変更できるかを示します。

NoiseMethod プロパティを Signal to noise ratio に設定し、SNR プロパティの値を 20 に設定して、AWGN チャネル System object を作成します。

h = comm.AWGNChannel( ... 
    'NoiseMethod', 'Signal to noise ratio (SNR)',...
    'SNR', 20);

step メソッドを呼び出して、最初の入力信号を処理します。この入力は 1 つのチャネルをもちます。

step(h, ones(20, 1));

step メソッドを呼び出して、2 番目の入力信号を処理します。この入力は 2 つのチャネルをもち、チャネルあたりのサンプル数が異なります。

step(h, ones(90, 2))

この例では、チャネル数は変更できますが、SNR プロパティの値はスカラーにしなければなりません。

ノイズ分散入力信号の処理

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

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

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

step メソッドを呼び出して、データを処理します。このオブジェクトは 2 つのチャネルについて 128 サンプルを処理します。分散入力は 1 行 2 列のベクトルです。

step(h, ones(128, 2), [0.1, 0.2]);

step メソッドを呼び出して、データを処理します。このオブジェクトは 5 つのチャネルを通じて 150 サンプルを処理します。分散入力はスカラーです。

step(h, ones(150, 5), 1)

反復性の実現に内蔵の乱数ストリームを使用する信号の処理

この例では、内蔵の乱数ストリームを使用するときにリセット後に同じ出力を生成する方法を示します。

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

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

step メソッドを呼び出して、データを処理します。

y1 = step(h, ones(8, 2));

reset メソッドを呼び出して、AWGN チャネル System object をリセットします。これにより、乱数データ ストリームが初期シードの 99 にリセットされます。

reset(h);

step メソッドを呼び出して、同じデータを処理します。

y2 = step(h, ones(8, 2));

2 つの信号を比較します。

isequal(y1, y2)

アルゴリズム

このオブジェクトは、AWGN Channel ブロックのリファレンス ページで説明されているアルゴリズム、入力、および出力を実装しています。オブジェクト プロパティはブロック パラメーターに対応しますが、以下の場合を除きます。

  • ブロックは、V5 RANDN (Ziggurat) アルゴリズムに基づいた乱数発生器を使用し、初期シードを [Initial seed] パラメーターで設定して乱数発生器を初期化します。ブロックを含むシステムが実行されるたびに、ブロックは同じシーケンスの乱数を生成します。同様に、オブジェクトの RandomStream プロパティを mt19937ar with seed に設定した場合、オブジェクトをリセットすることで再現性のある数を生成できます。

    RandomStream プロパティを Global stream に設定すると、このオブジェクトは MATLAB の既定の乱数ストリームを使用して乱数を生成します。このオブジェクトを使用して再現性のある数を生成するために、次のコードを使用して MATLAB の既定の乱数ストリームをリセットできます。

    reset(RandStream.getGlobalStream)

    詳細は、RandStream のヘルプを参照してください。

  • ときには、step メソッドへの入力が複雑になることもあります。そのような場合、MATLAB の乱数ストリームを設定することによって、ブロックとオブジェクトの乱数発生器およびシードを一致させると、乱数は同じ順序では現れなくなります。

    オブジェクトは次のような乱数データを作成します。

    noise = randn(lengthInput,1) + 1i randn(lengthInput,1)

    ブロックは次のような乱数データを作成します。

    randData = randn(2 lengthInput,1)
    noise = randData(1:2:end) + 1i randData(2:2:end)

  • [Symbol period] ブロック パラメーターは、SamplesPerSymbol プロパティに対応します。

  • [Mode] パラメーターの [Variance from mask] および [Variance from port] のブロック パラメーター オプションは、VarianceSource プロパティに対応します。

参考

この情報は役に立ちましたか?