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 contains 2 objects of type line. This object represents Channel 1.

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

demodData = genqamdemod(rxSig,c);
[numErrors,ser] = symerr(data,demodData)
numErrors = 1
ser = 5.0000e-04

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

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

ランダム データ シンボルと 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 = 321

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

rng(seed);

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

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

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

isequal(numErr1, numErr2)
ans = logical
   1

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

X のパワーを 0 dBW として指定し、10 dB の SNR を生成するノイズを付加して、ローカルの乱数ストリームを使用します。

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

ホワイト ガウス ノイズを sigin に付加します。isequalを使用して sigout1sigout2 を比較します。乱数ストリームをリセットしない場合、出力は等しくなりません。

sigout2 = awgn(sigin,10,0,S);
isequal(sigout1,sigout2)
ans = logical
   0

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

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

入力引数

すべて折りたたむ

入力信号。スカラー、ベクトルまたは配列として指定します。入力信号の電力は、0 dBW になると仮定されています。

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

dB 単位の S/N 比。スカラーとして指定します。この関数は、各チャネルに同じ snr 値を適用します。入力信号の列は、マルチチャネル信号のさまざまなチャネルを表します。

データ型: double

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

  • スカラー — 値が in の信号レベルとして使用され、snr の値に基づいた適切なノイズ レベルが求められます。

  • 'measured'in の信号レベルが計算され、snr の値に基づいた適切なノイズ レベルが求められます。

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

データ型: double

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

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

乱数発生器のシード値。スカラーとして指定します。

データ型: double

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

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

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

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

出力引数

すべて折りたたむ

出力信号。スカラー、ベクトル、または配列として返されます。返される出力信号は、ホワイト ガウス ノイズが付加された入力信号です。

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

詳細

すべて折りたたむ

AWGN とは

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

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

ヒント

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

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

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

    • awgn への入力として、静的 seed 値を指定する。

    • awgn への入力として渡す前に、randobject に対して関数 reset (RandStream) を使用する。

    • awgn への入力として、既知の状態の randobject を指定する。詳細については、RandStream を参照してください。

拡張機能

バージョン履歴

R2006a より前に導入