Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

awgn

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

説明

out = awgn(in,snr) は、ホワイト ガウス ノイズをベクトル信号 in に付加します。この構文では、in の電力が 0 dBW であると仮定します。

out = awgn(in,snr,signalpower) は、入力信号の電力値 (dBW 単位) を受け入れます。関数が in の電力を測定してからノイズを付加するには、signalpower'measured' として指定します。

out = awgn(in,snr,signalpower,randobject) は、前述の構文の入力の組み合わせと乱数ストリーム オブジェクトを受け入れて、正規ランダム ノイズ サンプルを生成します。反復可能なノイズ サンプルの生成の詳細は、ヒントを参照してください。

out = awgn(in,snr,signalpower,seed) は、入力信号にホワイト ガウス ノイズを付加するときに使用される、正規乱数発生器を初期化するためのシード値を指定します。反復可能なノイズ サンプルの生成の詳細は、ヒントを参照してください。

out = awgn(___,powertype) は、前述のいずれかの構文の入力引数に加えて、信号およびノイズ パワー タイプを 'dB' または 'linear' として指定します。

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

すべて折りたたむ

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

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

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

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

ガウス ノイズが存在する場合は非矩形の 16 配列コンスタレーションを使用してデータの送受信を行います。ノイズの多いコンスタレーションの散布図を示し、2 つの異なる S/N 比のシンボル誤り率 (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];
M = length(c);

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

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

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

modData = genqammod(data,c);

S/N 比 (SNR) が 20 dB の AWGN チャネル経由で信号を渡します。

rxSig = awgn(modData,20,'measured');

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

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

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

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

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

rxSig = awgn(modData,10,'measured');
demodData = genqamdemod(rxSig,c);
[numErrors,ser] = symerr(data,demodData)
numErrors = 462
ser = 0.2310

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);

AWGN を 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 を適用します。配列の入力信号は、独立した複数のチャネルという概念を持ちません。独立した複数のチャネルを考慮するには、comm.AWGNChannel を参照してください。

データ型: double

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

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

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

    メモ

    'measured' を指定した場合、この関数は全入力信号のすべての要素を使用して信号強度を計算します。強度が計算されるときには、配列の入力信号は独立した複数のチャネルという概念を持ちません。

データ型: double

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

wgn は、randn を使用して正規ランダム ノイズ サンプルを生成します。関数 randn は、RandStream オブジェクトからの 1 つ以上の一様な値を使用して各正規値を生成します。

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

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

データ型: double

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

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

  • powertype'linear' である場合、snr は比率として測定され、signalpower はワット単位で測定されます。

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

出力引数

すべて折りたたむ

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

ヒント

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

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

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

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

拡張機能

参考

関数

オブジェクト

R2006a より前に導入