2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 [C] Подскажите с Гауссовским аддитивным шумом.
Сообщение03.04.2012, 16:30 
Аватара пользователя


07/07/10
100
Нижний Новгород
Всем привет!

Я нашёл в интернете подходящую мне реализацию, но никак не могу сопоставить константы, используемые в данной реализации с извесными мне физическими величинами.

Вот данные константы:
Код:
#define AA 12.37586
#define Bsu 0.4878992
#define Csu 12.67706
#define C1 0.9689279
#define C2 1.301198
#define PC 0.01958303
#define XN 2.776994
#define OXN 0.3601016


Сразу в голову не приходит откуда могда появиться такие сокращения физических терминов, но, быть может, у вас они на слуху. Мне бы хотябы понять где тут "Мощность шума" :)

Полный код для генератора шума можно увидеть тут: http://toto-share.com/2011/01/create-random-noise/

Рассмотрю коды любых других генераторов на СИ

Спасибо!

 Профиль  
                  
 
 Re: [C] Подскажите с Гауссовским аддитивным шумом.
Сообщение08.04.2012, 19:01 
Аватара пользователя


07/07/10
100
Нижний Новгород
Неужели ни кто не писал Гауссов шум на СИ ?

 Профиль  
                  
 
 Re: [C] Подскажите с Гауссовским аддитивным шумом.
Сообщение08.04.2012, 19:24 
Аватара пользователя


31/10/08
1244
Unmanner
Просто вопрос у вас выглядит как-то глупо.

Пока на паскале
Код:
// Равномерное распределение на отрезки 0..1
function MyRandom:Real;
begin
MyRandSeed:=(MyRandSeed*$08088405+1);        //MyRandSeed- сучайное число на придыдущщем шаге
Result:=MyRandSeed*(1.0/$10000) / $10000;    // Rand - Случайное число в диапозоне [0..1]
end;

function MyRandom(m:Integer):Integer; Overload;
begin
MyRandSeed:=(MyRandSeed*$08088405+1);        //MyRandSeed- сучайное число на придыдущщем шаге
Result:=MyRandSeed mod m;    // Rand - Случайное число
end;

function MyRandomInteger:Integer;
begin
MyRandSeed:=(MyRandSeed*$08088405+1);        //MyRandSeed- сучайное число на придыдущщем шаге
Result:=MyRandSeed;    // Rand - Случайное число
end;

var
IsTwoNorm:Boolean=False;
TwoNorm:Real;
// Нормальное   распределение
function MyRandomNorm:Real;
var s,u,v:Real;
begin
if IsTwoNorm then
begin
Result:=TwoNorm;
IsTwoNorm:=False;
end else
begin
repeat
u:=MyRandom*2-1;  // получается из равномерного распределения
v:=MyRandom*2-1;
s:=u*u+v*v;
until s<=1;
TwoNorm:=v*sqrt(-2*ln(s)/s);
isTwoNorm:=True;
Result:=u*sqrt(-2*ln(s)/s);
end;
end;


// Нормальное   распределение оно же гауссовское
function RandomNorm(Mean,StdDev:Real):Real;
begin
Result:=MyRandomNorm*StdDev+Mean;
end;


с++
Код:
bool IsTwoNorm;
double TwoNorm;

double
MyRandomNorm ()
{
double  s,u,v;

if (IsTwoNorm) {
return TwoNorm;
IsTwoNorm=false;
} else
{
do {
u=(rand()/(RAND_MAX)*2-1; 
v=(rand()/(RAND_MAX)*2-1;
s=u*u+v*v;
} while (s<=1.0);
TwoNorm=v*sqrt(-2*ln(s)/s);
isTwoNorm=true;
return u*sqrt(-2*ln(s)/s);
};
};

double RandomNorm2(double Mean,StdDev)
{
return MyRandomNorm()*StdDev+Mean;
}


Надеюсь правильно на Си перевел. Сейчас времени нет проверить.

 Профиль  
                  
 
 Re: [C] Подскажите с Гауссовским аддитивным шумом.
Сообщение08.04.2012, 19:36 
Аватара пользователя


07/07/10
100
Нижний Новгород
Pavia в сообщении #558071 писал(а):
Unmanner
Просто вопрос у вас выглядит как-то глупо.
Код:
a[i] +=2*(rand() / RAND_MAX)-1;


Мне нужна возможность менять мощьность шума, величина Сигма, и тп. Как это сделать в вашем примере?

 Профиль  
                  
 
 Re: [C] Подскажите с Гауссовским аддитивным шумом.
Сообщение08.04.2012, 19:38 
Аватара пользователя


31/10/08
1244
Unmanner
Давно писал, равномерное с гауссовским по путал.
Поправил.

 Профиль  
                  
 
 Re: [C] Подскажите с Гауссовским аддитивным шумом.
Сообщение08.04.2012, 20:44 
Аватара пользователя


07/07/10
100
Нижний Новгород
Pavia, подскажи как изменить параметры шума, пожалуйста..

 Профиль  
                  
 
 Re: [C] Подскажите с Гауссовским аддитивным шумом.
Сообщение08.04.2012, 21:10 
Аватара пользователя


31/10/08
1244
StdDev это сигма или стандартное отклонение. Им и регулируешь.

 Профиль  
                  
 
 Re: [C] Подскажите с Гауссовским аддитивным шумом.
Сообщение08.04.2012, 22:01 
Аватара пользователя


07/07/10
100
Нижний Новгород
Pavia в сообщении #558117 писал(а):
StdDev это сигма или стандартное отклонение. Им и регулируешь.



Спасибо, а мощность? :)

 Профиль  
                  
 
 Re: [C] Подскажите с Гауссовским аддитивным шумом.
Сообщение09.04.2012, 18:22 
Аватара пользователя


31/10/08
1244
Цитата:
Спасибо, а мощность? :)

Мощность есть сигнал в квадрате.

 Профиль  
                  
 
 Re: [C] Подскажите с Гауссовским аддитивным шумом.
Сообщение09.04.2012, 19:27 
Аватара пользователя


07/07/10
100
Нижний Новгород
Pavia в сообщении #558407 писал(а):
Цитата:
Спасибо, а мощность? :)

Мощность есть сигнал в квадрате.

Как регулировать мощность шума в вашей программе?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group