信号にノイズを追加するために使用されるmatlab関数awgn()
では、分散を指定する方法はありますか?一般的に 特定の分散を使用してノイズを生成する方法
noisevec = sqrt(2)*randn(length(X),1);
行っているでしょうが、私はAWGN()を適用し、分散のかどうかを確認したいと思い、ノイズの多い観測が
Y = X+noisevec
あるその後、分散2の雑音ベクトルを作成しますが、ノイズは確かにユーザーが指定したとおりです。どうやってするか?
% add noise to produce
% an SNR of 10dB, use:
X = sin(0:pi/8:6*pi);
Y = awgn(X,10,'measured');
UPDATE:解に基づいてAWGNを使用して、特定の分散とノイズを生成する場合、出力は(同じでなければならない)が設けられて答え/溶液中に与えられ、AWGNなしで使用する場合()。私の理解に間違っていますか?ここに私がチェックした方法があります。
x = rand(1,10); $generating source input
snr =10;
variance = 0.1;
%This procedure is based on the answer
y1 = awgn(x, snr, 'measured');
y1 = x + (y1 - x) * sqrt(variance/var(y1 - x));
%This is the traditional way, without using awgn()
y2 = x+sqrt(variance)*randn(1,10);
y1がy2と等しくない。なぜだろう?
あなたが何を求めているのかは不明です。あなたはawgn()の分散が本当にそれが何であるかを検証しようとしていますか? –
@OliverCharlesworth:awgn()を使用して特定のノイズ分散を持つノイズの多い信号を生成できるかどうかを知りたい。 – SKM
'var(Y-X)'は使えますか?私はあなたに 'awgn()'が適用されているものの分散を与えると思います。 – chessofnerd