Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

awgn

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

説明

Y = awgn(X,snr) は、ホワイト ガウス ノイズをベクトル信号 X に付加します。この構文では、X の電力が 0 dBW であると仮定します。加法性ホワイト ガウス ノイズの詳細については、AWGN とはを参照してください。

Y = awgn(X,snr,signalpower) は、入力信号の電力値 (dBW 単位) を受け入れます。X の電力を測定してからノイズを付加するには、signalpower'measured' として指定します。'measured' オプションは、入力信号の電力がフェージングのために時間とともに変化し、チャネルのコヒーレンス時間が入力期間よりも大きい場合、ループ内で繰り返される関数 awgn の呼び出しに対して要求される平均 SNR を生成しません。

Y = awgn(X,snr,signalpower,randobject) はさらに、乱数ストリーム オブジェクトを受け入れて、正規ランダム ノイズ サンプルを生成します。繰り返し可能なノイズ サンプルの生成の詳細は、ヒントを参照してください。

Y = awgn(X,snr,signalpower,seed) は、入力信号にホワイト ガウス ノイズを付加するために使用される正規乱数発生器を初期化するためのシード値を指定します。

Y = awgn(___,powertype) は、前述のいずれかの構文の入力引数に加えて、信号およびノイズ パワー タイプを 'dB' または 'linear' として指定します。SNR とその他の相対的なノイズ パワー (Es/N0、Eb/N0 など) の測定値との関係の詳細については、AWGN チャネル ノイズ レベルを参照してください。

[Y,var] = awgn(___) はさらに、ランダム ノイズ サンプルの生成に使用される合計ノイズ分散を返します。

すべて折りたたむ

ノコギリ波を作成します。

t = (0:0.1:60)';
x = sawtooth(t);

ホワイト ガウス ノイズを付加し、結果をプロットします。

y = awgn(x,10,'measured');
plot(t,[x y])
legend('Original Signal','Signal with AWGN')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Original Signal, Signal with AWGN.

ガウス ノイズが存在する場合は非矩形の 16 配列コンスタレーションを使用してデータの送受信を行います。ノイズを含むコンスタレーションの散布図を表示し、2 つの異なる SNR についてシンボル エラー レート (SER) を見積もります。

電話回線モデムに対し、V.29 規格に基づいて 16-QAM コンスタレーションを作成します。

c = [-5 -5i 5 5i -3 -3-3i -3i 3-3i 3 3+3i 3i -3+3i -1 -1i 1 1i];
sigpower = pow2db(mean(abs(c).^2));
M = length(c);

ランダムなシンボルを生成します。

data = randi([0 M-1],2000,1);

関数 genqammod を使用してデータを変調します。カスタム コンスタレーションは矩形ではないため、一般的な QAM 変調が必要です。

modData = genqammod(data,c);

SNR が 20 dB の AWGN チャネル経由で信号を渡します。

rxSig = awgn(modData,20,sigpower);

受信信号と基準コンスタレーション c の散布図を表示します。

h = scatterplot(rxSig);
hold on
scatterplot(c,[],[],'r*',h)
grid
hold off

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, xlabel In-Phase, ylabel Quadrature contains 2 objects of type line. One or more of the lines displays its values using only markers This object represents Channel 1.

関数 genqamdemod を使用して、受信した信号を復調します。シンボル誤り数と SER を求めます。

demodData = genqamdemod(rxSig,c);
[numErrors,ser] = symerr(data,demodData)
numErrors = 4
ser = 0.0020

SNR が 10 dB の AWGN チャネル経由で送信と復調の処理を繰り返します。低減された SNR について SER を判別します。予想どおり、SNR が低下するとパフォーマンスも低下します。

rxSig = awgn(modData,10,sigpower);
demodData = genqamdemod(rxSig,c);
[numErrors,ser] = symerr(data,demodData)
numErrors = 457
ser = 0.2285

ランダム データ シンボルと 4-PSK 変調信号を生成します。

M = 4;
k = log2(M);
snr = 3;
data = randi([0 M-1],2000,1);
x = pskmod(data,M);

乱数発生器のシードを設定します。

seed = 12345;

関数 rng を使用してから関数 awgn を呼び出して、繰り返し可能なランダム ノイズを生成します。

rng(seed);
y = awgn(x,snr);

ビット エラーを計算します。

dataHat = pskdemod(y,M);
numErr1 = biterr(data,dataHat,k)
numErr1 = 309

乱数発生器のシードをリセットします。

rng(seed);

PSK 信号を復調し、ビット エラーを計算します。

y = awgn(x,snr);
dataHat = pskdemod(y,M);
numErr2 = biterr(data,dataHat,k)
numErr2 = 309

numErr1numErr2 と比較します。エラー数は、乱数発生器のシードをリセットした後も同じになります。

isequal(numErr1, numErr2)
ans = logical
   1

RandStreamオブジェクトとオブジェクト関数resetを使用して、ホワイト ガウス ノイズの付加結果を生成します。

入力信号のパワーを 0 dBW として指定し、10 dB の SNR を生成するノイズを付加して、ローカルの乱数ストリームを使用します。ホワイト ガウス ノイズを sigin に 2 回付加し、sigout1 および sigout2 を生成します。isequalを使用して sigout1sigout2 を比較します。乱数ストリームをリセットしない場合、出力は等しくなりません。

S = RandStream('mt19937ar',Seed=5489);
sigin = sqrt(2)*sin(0:pi/8:6*pi);
sigout1 = awgn(sigin,10,0,S);
sigout2 = awgn(sigin,10,0,S);
isequal(sigout1,sigout2)
ans = logical
   0

乱数ストリーム オブジェクトをリセットし、AWGN を sigout1 に追加する前の状態にこのオブジェクトを戻します。AWGN を sigin に追加して sigout3 を生成し、sigout1sigout3 を比較します。乱数ストリームをリセットすると、出力は等しくなります。

reset(S);
sigout3 = awgn(sigin,10,0,S);
isequal(sigout1,sigout3)
ans = logical
   1

入力引数

すべて折りたたむ

入力信号。スカラー、ベクトル、dlarray (Deep Learning Toolbox) オブジェクト、または 3 次元数値配列として指定します。入力信号の電力は、0 dBW になると仮定されています。X が複素数の場合、awgn は複素数ノイズを付加します。詳細については、配列のサポートを参照してください。

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

dB 単位の S/N 比。次のように指定します。

  • スカラー (入力信号がスカラーまたはベクトルの場合)。

  • スカラーまたはベクトル (入力信号が 3 次元配列の場合)。詳細については、配列のサポートを参照してください。

この関数は、各チャネルに同じ snr 値を適用します。入力信号の列は、マルチチャネル信号のさまざまなチャネルを表します。

データ型: double

dBW 単位の信号強度。スカラーまたは 'measured' として指定します。

  • スカラー — 値は X の信号レベルとして使用され、指定された snr を達成するために必要なノイズ レベルが求められます。

  • 'measured'X の信号レベルが計算され、指定された snr を達成するために必要なノイズ レベルが求められます。入力信号が dlarray である場合、または snr がベクトルである場合、この値は使用できません。

入力信号がマルチチャネル信号の場合、関数はすべてのチャネルの signalpower 値を単一の値として計算します。次に、その値を使用して、すべてのチャネルのノイズレベルを計算します。

データ型: double

乱数ストリーム オブジェクト。RandStream オブジェクトとして指定します。乱数ストリーム オブジェクトの状態により、関数 randn によって生成される数列が決まります。乱数ストリーム オブジェクトは、関数 reset (RandStream) とそのプロパティを使用して構成します。入力信号が dlarray の場合、乱数ストリーム オブジェクトを指定することはできません。

繰り返し可能なノイズ サンプルの生成の詳細は、ヒントを参照してください。

乱数発生器のシード値。スカラーとして指定します。入力信号が dlarray の場合、シードを指定することはできません。

データ型: double

信号強度単位。'dB' または 'linear' として指定します。

  • powertype'dB' である場合、snr は dB 単位、signalpower は dBW 単位で測定されます。

  • powertype'linear' である場合、snr は比率として測定され、signalpower は 1 オームの参照負荷を想定してワット単位で測定されます。

powertype 引数を設定するには、snrsignalpower も設定しなければなりません。

出力引数

すべて折りたたむ

出力信号。スカラー、ベクトル、または dlarray (Deep Learning Toolbox) オブジェクトとして返されます。返される出力信号は、ホワイト ガウス ノイズが付加された入力信号です。入力信号 Xdlarray の場合、この出力 Ydlarray になります。

合計ノイズ分散。正のスカラーまたはベクトル (snr がベクトルの場合) として返されます。この関数は、ノイズ分散を使用してランダム ノイズ サンプルを生成します。

詳細

すべて折りたたむ

AWGN とは

加法性ホワイト ガウス ノイズ (AWGN) は、受信機の RF フロント エンドにおける電子の動きを表すシンプルなノイズ モデルです。名前が示すように、ノイズが信号に付加されます。このノイズの名称が "ホワイト" なのは、サンプリング帯域幅全体にわたってスペクトルが均一であるためです。同様に、白色には可視光スペクトルのすべての周波数においてスペクトル強度レベルが均等に含まれます。ガウス ノイズなのは、その振幅が正規確率分布でモデル化できるためです。

AWGN チャネルは、衛星通信チャネルのモデル化によく使用されます。これは、通常そのようなチャネルがフェージング、マルチパス、干渉などの一般的な地上波障害の影響を受けないためです。AWGN チャネルは、地上波リンクのビット エラー レート パフォーマンスに対する最高条件の境界を設定するものであるため、地上波無線リンクの解析の開始点として適しています。

配列のサポート

関数 awgn では、入力信号 X に数値配列、dlarray (Deep Learning Toolbox)、または gpuArray (Parallel Computing Toolbox) を指定できます。

  • X — 入力信号には、最大 3 次元の配列 (Ns×Nc×Nb の配列として指定) を指定できます。

    Ns はサンプル数、Nc はチャネル数、および Nb はバッチ数です。

  • snr には、サイズ Nb のスカラーまたはベクトルを指定できます。

ヒント

  • SNR とその他の相対的なノイズ パワー (Es/N0、Eb/N0 など) の測定値との関係の詳細については、AWGN チャネル ノイズ レベルを参照してください。

  • 繰り返し可能なホワイト ガウス ノイズ サンプルを生成するには、次のいずれかを行います。

    • 関数 rng(seed) を使用してから関数 awgn を呼び出して、繰り返し可能なランダム ノイズを生成する。

    • 入力が dlarray オブジェクトである場合を除き、静的 seed 値を awgn への入力として指定する。

    • 入力が dlarray オブジェクトである場合を除き、入力として awgn に渡す前に、randobject に対して関数 reset (RandStream) を使用する。

    • 入力が dlarray オブジェクトである場合を除き、既知の状態の randobjectawgn への入力として指定する。詳細については、RandStream を参照してください。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する

参考

関数

オブジェクト

ブロック