:: Курилка
Re: Генератор фликер шума
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
JetBrain Mono


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Генератор фликер шума
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005

Вот кстати да.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Генератор фликер шума
boba

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Паша, привет.
Стал разбираться в твоем коде

При розовом шуме
laWave[lnCnt, 3] = laWave[lnCnt, 1] ^ lnTypeNoise и
небольшом set decimal
значение или всегда ноль или очень маленькое.
Это lnSamples поставил 365*25


pasha_usue
Волна задаётся в периодах относительно отрисовываемого поля. А для получения нужного результата стоит много-много поиграться с генерацией исходных волн.
Похоже, деление на lnWaves - лишнее.

CLEAR
&& -2 - красный шум, -1 - розовый, 0 - белый, 1 - синий, 2 - фиолетовый
lnTypeNoise = -1
lnSamples = 1200
DIMENSION laSample (lnSamples)
lnWaves = 10
DIMENSION laWave (lnWaves, 3)
* Генератор волн
FOR lnCnt = 1 TO lnWaves
laWave[lnCnt, 1] = 1 + FLOOR(RAND() * lnSamples / 10) && Волна произвольной длины
laWave[lnCnt, 2] = RAND() * PI() * 2 && Произвольный сдвиг по фазе
laWave[lnCnt, 3] = laWave[lnCnt, 1] ^ lnTypeNoise && Уменьшаем или увеличиваем уровень шума в зависимости от длины волны
NEXT lnCnt
* Генератор шума
lnMin = +100
lnMax = -100
FOR lnX = 1 TO lnSamples
lnSum = 0
FOR lnWave = 1 TO lnWaves
lnSum = lnSum + Curve(laWave[lnWave, 1], laWave[lnWave, 2], lnX) * laWave[lnWave, 3]
NEXT lnWave
laSample[lnX] = lnSum && / lnWaves Вот здесь у меня вопрос.
lnMin = MIN(lnMin, laSample[lnX])
lnMax = MAX(lnMax, laSample[lnX])
NEXT lnX
* Вывод
lnY = 1
lnScale = _SCREEN.Height / (lnMax - lnMin) * 0.9 && Рамочку оставляем небольшую
lnOffSetY = lnScale * ABS(lnMin) + 0.05 * _SCREEN.Height && И здесь рамочку
FOR lnX = 2 TO lnSamples
_SCREEN.Line( ;
lnX - 1, ;
lnOffSetY + lnScale * lnY, ;
lnX, ;
lnOffSetY + lnScale * laSample[lnX])
lnY = laSample[lnX]
NEXT lnX
FUNCTION Curve
LPARAMETERS tnFreq, ; && Частота в периодах на ширину заполняемой области
tnPhase, ; && Сдвиг по фазе
tnX && Что заполняем
RETURN sin(2 * PI() * tnFreq * tnX / lnSamples + tnPhase)
ENDFUNC



Исправлено 1 раз(а). Последнее : boba, 21.09.20 13:03
Ratings: 0 negative/0 positive
Re: Генератор фликер шума
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
boba
Паша, привет.
Стал разбираться в твоем коде

При розовом шуме
laWave[lnCnt, 3] = laWave[lnCnt, 1] ^ lnTypeNoise и
небольшом set decimal
значение или всегда ноль или очень маленькое.
Это lnSamples поставил 365*25
Я покумекал надосуге. Волны лучше генерить не рэндомные, а подряд в каком-то диапазоне, с каким-то шагом:

Пока от балды пишу:
laWave[lnCnt, 1] = 100 + lnCnt * 2

И задать коэффициент затухания при росте длины волны. Понятно, что он должен быть 1/f (для розового), но ему можно добавить константный множитель. Короче, поиграть нужно.
Ratings: 0 negative/0 positive
Re: Генератор фликер шума
boba

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
так еще хуже
Ratings: 0 negative/0 positive
Re: Генератор фликер шума
of63
Автор

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
() habr.com - цифровой фильтр, просто линия задержки с отводами (память на отсчеты), отводы подаются на сумматор, без обратной связи. Можно построить ФНЧ (с АЧХ 1/f) из отсчетов ГСЧ...

Доб. habr.com - о рекурсивных фильтрах



Исправлено 1 раз(а). Последнее : of63, 21.09.20 15:49
Ratings: 0 negative/0 positive
Re: Генератор фликер шума
boba

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
причем тут аппаратурное решение.
Речь о программе.
Ratings: 0 negative/0 positive
Re: Генератор фликер шума
of63
Автор

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Аппаратное решение и программное - это одно и тоже. Например, если имеется генератор шума (ГСЧ), то построив на выходе его фильтр НЧ (цифровой же), с АЧХ 1/f можно ожидать на его выходе отсчеты с распределением "фликкер-шум" (?)

Генертор белого шума - это допустим RAND(). Не знаю, "белый шум" ли он генерирует, если имеется ввиду не аппаратное решение...

Строим фильтр:
Фильтр НЧ первой ступени - это среднее между соседними 10 отсчетами, берем от этого выхода (суммы) 10/10 значения (самая низкочастотная часть спектра)
Фильтр НЧ второй ступени - это среднее между соседними 9 отсчетами, берем от этого выхода (суммы) 10/9 значения
и т.д.
Фильтр НЧ девятой ступени - это среднее между соседними 2 отсчетами, берем от этого выхода (суммы) 10/2 значения

Без фильтра (просто отсчет ГСЧ) - берем от него 10/1 значения (Доб. Упс. Нет, эти отсчеты не брать вообще! Вся высокочастотка от них пойдет на выход)

Все это складываем, нормируем, и вроде должно получиться на выходе ГСЧ с "розовым" распределением...

(коэфициэнты взял от балды, читаю про Z-преобразования...)

Доб. Вот "аппаратурное" решение, но с кодами:
electronix.ru

ru.wikipedia.org - про фильтры



Исправлено 5 раз(а). Последнее : of63, 21.09.20 17:46
Ratings: 0 negative/0 positive
Re: Генератор фликер шума
sphinx

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
of63
читаю про Z-преобразования...

Ты ж вроде РТ заканчивал, там проходят Z-преобразования.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Генератор фликер шума
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
of63
Аппаратное решение и программное - это одно и тоже. Например, если имеется генератор шума (ГСЧ), то построив на выходе его фильтр НЧ (цифровой же), с АЧХ 1/f можно ожидать на его выходе отсчеты с распределением "фликкер-шум" (?)
Вот я тоже из этого исходил. Я генерирую N волн в разных фазах и разных частот. Мощность волны режу в зависимости от длины. Но, проблема в том, что не работает. Нужен более чёткий набор частот и их характеристик.

А решение на фортране предлагает модифицировать заранее посчитанными коэффициентами белый шум, сгенерированный через ГСЧ. Но что-то мне кажется, слишком монотонная картинка получится на больше чем 1024 отсчёта.
Ratings: 0 negative/0 positive
Re: Генератор фликер шума
of63
Автор

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Тут неясностей много.
Володя не обозначил параметры сигнала (полосу), точность (разрядность квантования), длительность повторения последовательности...
Куда потом уходит сигнал (гармоники частоты отсчетов будут отсекаться?)
Можно ли считать ГСЧ генератором "белого" шума? (если на выходе поставить ФНЧ до частоты отсчетов, то каков спектр на выходе?)
Можно ли сырой дискретный сигнал (до ФНЧ) подвергать цифровой фильтрации для обеспечения нужного спектра?
Какой программой измерить полученный сигнал, чтобы проверить качество получившегося (чтобы свою не писать, т.к. в теории "плаваю", и просто время...)
...
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 11 (Гостей: 11)

© 2000-2024 Fox Club 
Яндекс.Метрика