Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Evgenij Masherov                     2:5020/175.2   22 Aug 2002  21:17:27
 To : Evgeniy Zheldak
 Subject : Белый Шум
 -------------------------------------------------------------------------------- 
 
 Wed Aug 21 2002 17:55, Evgeniy Zheldak wrote to All:
  EZ> Hе подскажите алгоpитм генеpации белого шума. Можно ссылки на инет.
 
  Для постоянства спектральной мощности на всех частотах (что и понимается под
 определением "белый шум") достаточно, если вспомнить выражение для спектра
 через корреляционную функцию, чтобы значения сигнала были бы некоррелированы.
 Поэтому пригоден любой хороший ГСЧ. Как правило, используют равномерные СЧ,
 либо мультипликативный метод (в большинстве генераторов из стандартных
 библиотек),
 либо ГСЧ на сдвиговых регистрах (особенно при аппаратной реализации),
 либо вариации на тему Фибоначчиевых генераторов (например, на спецпроцессорах,
 где умножение много дороже сложения).
 Для эстетов (причем не заботящихся о скорости) можно рекомендовать гауссов
 шум, тогда последовательные значения будут не только некоррелированы, но и
 независимы (на самом деле, конечно, последовательные значения ГСЧ всегда
 зависимы - в данном случае просто зависимость будет невыявима обычными
 методами).
 Примеры источников белого шума (на примере шипящих в вокодерах):
 
 1. В действующем американском военном стандарте сжатия речи до 2400 бит/сек
 (LPC10) используется модифицированный Фибоначчиев генератор
 int random_(struct lpc10_decoder_state *st)
 {
     /* Initialized data */
 
     int *j;
     int *k;
     short *y;
 
     /* System generated locals */
     int ret_val;
 
 /*    Parameters/constants */
 /*       Local state */
 /*   The following is a 16 bit 2's complement addition, */
 /*   with overflow checking disabled */
 
     j = &(st->j);
     k = &(st->k);
     y = &(st->y[0]);
 
     y[*k - 1] += y[*j - 1];
     ret_val = y[*k - 1];
     --(*k);
     if (*k <= 0) {
   *k = 5;
     }
     --(*j);
     if (*j <= 0) {
   *j = 5;
     }
     return ret_val;
 } /* random_ */
 
 2. В новом стандарте того же назначения (MELP)
 используется стандартный random
 
 3. В стандарте G723.1 ITU
 используется свой мультипликативный генератор вида
 
 Temp &= (Word32) 0x0000ffff ;
 Temp = Temp*(Word32)521 + (Word32) 259 ;
 
 4. А, скажем, т. Прокис ("Цифровая связь") все больше про сдвиговые
 регистры...
 
 Евгений Машеров АКА СанитарЖеня
 
 --- ifmail v.2.15dev5
  * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Белый Шум   Evgenij Masherov   22 Aug 2002 21:17:27 
Архивное /ru.algorithms/3300594729c0.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional