В функции matlab awgn()
, которая используется для добавления шума в сигнал, существует ли способ указать дисперсию?Как генерировать шум с использованием определенной дисперсии
В общем, я бы просто сделал noisevec = sqrt(2)*randn(length(X),1);
создает шум вектор дисперсии 2. Тогда шумных наблюдения
Y = X+noisevec
Но я хотел бы применить (АБГШ), а затем проверить, если дисперсия шум действительно определяется пользователем. Как это сделать?
% add noise to produce
% an SNR of 10dB, use:
X = sin(0:pi/8:6*pi);
Y = awgn(X,10,'measured');
ОБНОВЛЕНИЕ: На основе решения, вывод должен быть таким же, при генерации шума с использованием специфической дисперсией АБГША(), приведенным в ответе/растворе при условии, и при использовании без 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