Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: белый шум в матлабе
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
vadimuzzz
есть такая функция y=awgn(x,SNR_dB), вроде все с ней понятно: взял BPSK сигнал x, подмешал шум, декодировал, посчитал коэфф. ошибок. повторил на нескольких SNR по многу раз, результат усреднил, получил кривую ошибок. а теперь строю ту же кривую с пом. функции berawgn(snr_axis,'psk',2,'nondiff') - результат совершенно другой.
сгенерил шум по-другому:
Код
SNR=10.^(SNRdB/10);
No=Eb/SNR;
N=sqrt(No/2)*randn(n);

добавил к сигналу, построил кривую - результат совпал с berawgn. посмотрел по справочникам - графики совпадают с тем, что выдает berawgn. что же
EUrry
Цитата(vadimuzzz @ Jun 30 2010, 12:21) *
сгенерил шум по-другому:
N=sqrt(No/2)*randn(n);[/code]

Функция randn(n) дает последовательность с гауссовым распределением, последовательность с равномерным распределением генерируется функцией rand(n).
vadimuzzz
понятно, но мне и нужен белый шум, отсюда и randn. кажется понял в чем дело - awgn первым параметром принимает отсчеты мощности, а я давал амплитуды. видимо, в этом причина
EUrry
Цитата(vadimuzzz @ Jul 2 2010, 02:36) *
понятно, но мне и нужен белый шум, отсюда и randn.

В белом шуме компоненты на всех частотах имеют одинаковую амплитуду, т. е. распределены равномерно, а гауссово распределение, оно же нормальное, это уже совсем другое.
P. S. Не первый раз сталкиваюсь с тем, что некоторые отождествляют белый шум с гауссовым. Откуда это? Может в книге какой опечатка? laughing.gif
vadimuzzz
Цитата
В белом шуме компоненты на всех частотах имеют одинаковую амплитуду, т. е. распределены равномерно, а гауссово распределение, оно же нормальное, это уже совсем другое.

спектр белого шума плоский, т.к. его автокорреляционная функция - дельта-функция. к распределению по амплитуде это не имеет никакого отношения, оно может быть разным (в частности гауссовским). вариант с равномерным распределением по амплитуде - совсем не вариант, где он в природе встречается?
Цитата(EUrry @ Jul 3 2010, 01:06) *
P. S. Не первый раз сталкиваюсь с тем, что некоторые отождествляют белый шум с гауссовым. Откуда это? Может в книге какой опечатка? laughing.gif

меня интересует именно гауссовский белый шум, неправильно выбрал название темы.

http://en.wikipedia.org/wiki/Additive_white_Gaussian_noise
EUrry
Цитата(vadimuzzz @ Jul 3 2010, 02:47) *
к распределению по амплитуде это не имеет никакого отношения, оно может быть разным (в частности гауссовским).

Да? Значит, что-то я уже позабыл. laughing.gif Надо бы заняться восстановлением упущенного. cranky.gif
sergeeff
Цитата(vadimuzzz @ Jul 3 2010, 02:47) *
спектр белого шума плоский, т.к. его автокорреляционная функция - дельта-функция. к распределению по амплитуде это не имеет никакого отношения, оно может быть разным (в частности гауссовским). вариант с равномерным распределением по амплитуде - совсем не вариант, где он в природе встречается?

меня интересует именно гауссовский белый шум, неправильно выбрал название темы.

http://en.wikipedia.org/wiki/Additive_white_Gaussian_noise


Если шум белый, т.е. имеет плоский бесконечный спектр, то никакого другого распределения по амплитуде кроме как равномерного он иметь не может. А к природе он (белый шум) никакого отношения не имеет - удобная математическая модель, и не более того.

Кстати, если генерится приличный белый шум, то из него достаточно просто можно получить шум с любыми другими распределениями, пропустив его через соответствующий фильтр. На кафедре (правда это было лет 30 тому) народ это активно использовал при моделировании чего угодно. Можно погуглить на эту тему.
dxp
Цитата(sergeeff @ Jul 3 2010, 16:36) *
Если шум белый, т.е. имеет плоский бесконечный спектр, то никакого другого распределения по амплитуде кроме как равномерного он иметь не может.

Почему? Плоский бесконечный спектр означает, что сигнал состоит из бесконечного количества гармоник с равными амплитудами - т.е. куда бы не ткнули по оси частот, получим те же самые по величине составляющие. А распределение задает вероятность появления амплитуды той или иной величины. Т.е., например, если мат. ожидание, скажем, 1 вольт, то это наиболее часто встречающаяся амплитуда в любой части спектра (раз у нас спектр плоский бесконечный), а остальные амплитуды отличаются от нее с вероятностью, заданной законом распределения. И не обязательно это распределение равномерно.

Насколько понимаю, спектр и распределение по амплитуде - достаточно ортогональные вещи. Поправьте, если ошибаюсь.
sergeeff
Правильнее, наверное говорить, о распределении амплитуд шума на конкретной частоте.
EUrry
Цитата(sergeeff @ Jul 3 2010, 14:44) *
Правильнее, наверное говорить, о распределении амплитуд шума на конкретной частоте.

Наверное да, распределение (только чего?) на конкретное частоте, т. к. согласно Баскакову (см. рисунок) равномерно в диапазоне частот распределена плотность мощности.
С другой стороны, как быть, если на каждой последующей частоте распределение будет меняться? cranky.gif
vadimuzzz
Цитата(sergeeff @ Jul 3 2010, 16:36) *
Если шум белый, т.е. имеет плоский бесконечный спектр, то никакого другого распределения по амплитуде кроме как равномерного он иметь не может.

и из чего сие следует? как вы увязываете распределение по амплитуде и распределение по частоте?
Цитата
А к природе он (белый шум) никакого отношения не имеет - удобная математическая модель, и не более того.

белый гауссовский шум является хорошей аппроксимацией воздействия большого числа независимых случайных величин.

Цитата(dxp @ Jul 3 2010, 17:29) *
Насколько понимаю, спектр и распределение по амплитуде - достаточно ортогональные вещи.

вот-вот.
sergeeff
Модель - она и в Африке модель. Лишь некоторое приблизительное описание реально существующих процессов и явлений. Вы же сами сначала говорили про белый шум, потом про белый гауссовский шум.

Про генераторы шумов на компьютере лучше всего написано у Кнута в каком-то из томов.

vadimuzzz
Цитата(sergeeff @ Jul 4 2010, 06:23) *
Модель - она и в Африке модель. Лишь некоторое приблизительное описание реально существующих процессов и явлений. Вы же сами сначала говорили про белый шум, потом про белый гауссовский шум.

эта модель применяется связистами по всему миру, это хорошая модель, прекрасно подходит для расчета теплового шума приемника. что название для темы было выбрано неудачно, я уже писал. вопрос-то состоял в различии результатов на одной модели в одном пакете моделирования, тут вроде все разъяснилось.
samurad
Цитата(vadimuzzz @ Jul 2 2010, 01:36) *
понятно, но мне и нужен белый шум, отсюда и randn. кажется понял в чем дело - awgn первым параметром принимает отсчеты мощности, а я давал амплитуды. видимо, в этом причина

Судя по хелпу, y=awgn(x,SNRdB) принимает в х амплитуды отчетов сигнала-вектора, и по умолчанию считает, что амплитуды нормированы, так что мощность вектора х есть 0 дБВт; иначе вызов этой функции другой: y=awgn(x,SNRdB,XPowdBW). Кроме того, eсли у вас несколько отчетов на бит, то их амплитуда должна быть в соответственное число раз меньше, чем амплитуда принятого бита, т.к. awgn() не понимает время.
shf_05
Цитата(dxp @ Jul 3 2010, 16:29) *
Насколько понимаю, спектр и распределение по амплитуде - достаточно ортогональные вещи. Поправьте, если ошибаюсь.

у шума есть характеристика- спектральная плотность мощности и с функцией распределения мгн. значений она не связана.
например пропуская шум с норм. распред. амплитуд. и равной спм (белый шум) через фильтр ФНЧ получим шум в некой полосе но опять же с гауссовым распределением мгнов. значений.
получить гауссово распред можно сложив несколько "шумов" с равном. распред, СПМ при этом однако не изменится

а вот получить шум с неравномерным или негауссовым распред. мнгн. амплитуд дело уже не столь тривиальное.
vadimuzzz
Цитата(samurad @ Jul 5 2010, 10:05) *
Судя по хелпу, y=awgn(x,SNRdB) принимает в х амплитуды отчетов сигнала-вектора, и по умолчанию считает, что амплитуды нормированы, так что мощность вектора х есть 0 дБВт; иначе вызов этой функции другой: y=awgn(x,SNRdB,XPowdBW).

я тоже сначала так подумал, но там есть еще вариант y=awgn(x,SNRdB,'measured'), который сам меряет вх. мощность. результаты тоже не сошлись, тогда я проверил "в лоб":
Код
SNRdB=3;
SNR=10.^(SNRdB/10);
Eb=1;
No=Eb/SNR;
n=1000000;
N1=sqrt(No/2)*randn(n,1);
BPSK_sig=-2*randint(n,1)+1;
s1=BPSK_sig+N1;
s2=awgn(BPSK_sig,SNRdB,'measured');
N2=s2-BPSK_sig;

и, что характерно, std(N1)~0.5; std(N2)~0.707. 0.707 подозрительно похож на sqrt(2)/2, из чего я и сделал вывод, что awgn работает с мощностями, в то время как я давал амплитуды.
samurad
Цитата(vadimuzzz @ Jul 5 2010, 07:54) *
я тоже сначала так подумал, но там есть еще вариант y=awgn(x,SNRdB,'measured'), который сам меряет вх. мощность. результаты тоже не сошлись, тогда я проверил "в лоб":
Код
SNRdB=3;
SNR=10.^(SNRdB/10);
Eb=1;
No=Eb/SNR;
n=1000000;
N1=sqrt(No/2)*randn(n,1);
BPSK_sig=-2*randint(n,1)+1;
s1=BPSK_sig+N1;
s2=awgn(BPSK_sig,SNRdB,'measured');
N2=s2-BPSK_sig;

и, что характерно, std(N1)~0.5; std(N2)~0.707. 0.707 подозрительно похож на sqrt(2)/2, из чего я и сделал вывод, что awgn работает с мощностями, в то время как я давал амплитуды.

Если отбросить подозрительность и рассмотреть факты (продолжая ваш код), то получается:
Код
BPSK_sig_pow = sum(abs(BPSK_sig.^2))./n   % измеренная мощность BPSK_sig
BPSK_sig_pow =
   1.0
% Для заданного SNR = 3dB, мощность шума должна быть в 2 раза меньше, т.е. 1/2
% Проверяем:
N1_pow = sum(abs(N1.^2))./n   % измеренная мощность шума N1
N1_pow =
   0.25  % ошибка
N2_pow = sum(abs(N2.^2))./n   % измеренная мощность шума N2
N2_pow =
   0.5  % верно

% Для проверки awgn(BPSK_sig,SNRdB):
s21 = awgn(BPSK_sig,SNRdB);  % можно, т.к. Eb = 1 W
N21 = s21 - BPSK_sig;
N21_pow = sum(abs(N21.^2))./n   % измеренная мощность шума N21
N21_pow =
   0.5  % опять верно

Вы ошиблись в моделировании шума N1: для реального сигнала BPSK весь шум так же реальный, поэтому правильно моделировать N1 так
Код
N11 = sqrt(No)*randn(n,1);
N11_pow = sum(abs(N11.^2))./n   % измеренная мощность шума N11
N11_pow =
   0.5 % верно
vadimuzzz
Цитата(samurad @ Jul 5 2010, 17:54) *
Вы ошиблись в моделировании шума N1: для реального сигнала BPSK весь шум так же реальный, поэтому правильно моделировать N1 так
Код
N11 = sqrt(No)*randn(n,1);

тогда не сходятся результаты с berawgn(snr_axis,'psk',2,'nondiff')
обратите внимание, везде берется No/2
http://www.dsplog.com/2007/08/05/bit-error...psk-modulation/

http://www.dsplog.com/db-install/wp-conten...criptbpsk_ber.m

http://gaussianwaves.blogspot.com/2010/04/...ation-over.html
samurad
Цитата(vadimuzzz @ Jul 5 2010, 14:25) *
тогда не сходятся результаты с berawgn(snr_axis,'psk',2,'nondiff')
обратите внимание, везде берется No/2
http://www.dsplog.com/2007/08/05/bit-error...psk-modulation/

http://www.dsplog.com/db-install/wp-conten...criptbpsk_ber.m

http://gaussianwaves.blogspot.com/2010/04/...ation-over.html

А они и не должны сходиться. Аргументом berawgn() является не SNR, a Es/No, который для комплексных сигналов на 3 дБ больше чем для действительных в Матлабе. См. раздел AWGN Channel в хелпе Communications Toolbox.
Вообще-то, различие смысла аргументов родственных функций создает некоторую неопределенность. Цена универсальности Матлаба.

Брать No/2 или No при генерации шума - это условность. Важно соблюсти соответствие между SNR, Es/No и Eb/No на протяжении всей цепи генерации и обработки сигнала в рамках той библиотеки функций, которую вы используете.
Muscat
Есть такой вопрос

Моделирую декодер Витерби, есть необходимость оценить, при каком уровне ошибок на входе он исправляет ошибки, а при каком размножает. До этого делал все функцией awgn, после чего квантовал и смотрел число ошибочных бит.
Есть ли функция вида Исказить Х бит в последовательности А,чтобы ошибки были распределены равновероятны
samurad
Цитата(Muscat @ Jul 6 2010, 14:25) *
Есть такой вопрос

Моделирую декодер Витерби, есть необходимость оценить, при каком уровне ошибок на входе он исправляет ошибки, а при каком размножает. До этого делал все функцией awgn, после чего квантовал и смотрел число ошибочных бит.
Есть ли функция вида Исказить Х бит в последовательности А,чтобы ошибки были распределены равновероятны

Смысл вопроса неясен.
Уровень ошибок = количество ошибок?
Квантовали для получения мягких решений? Тогда равновероятные ошибки на входе (в канале) аннулируют преимущество мягких решений декодера Витерби.
Макс. количество исправляемых ошибок - величина зависящая в большей степени от использованного кода (сверточного для Витерби декодера), а именно от его минимального евклидова расстояния. Для минимизации размножения ошибок (burst errors) используют интерливер на входе и "накрывают" сверточный код блоковым, напр. Рида-Соломона.

Функции генерации векторов случайных величин в Communications Toolbox (обратите внимание на первые две):
- randerr() to generate random bit error patterns, as in a model of channel errors
- randint() to generate uniformly distributed random integers
- randsrc() to generate random symbols
- awgn() to generate additive white Gaussian noise
- wgn() to generate white Gaussian noise across a load
Так же в основном Матлабе есть функции так сказать более низкого уровня:
- rand() to generate uniformly distributed pseudorandom numbers
- randn() to generate normally distributed pseudorandom numbers
- randperm() to generate uniform random permutation
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.