2014 dxdy logo

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

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




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

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

Вот данные константы:
Код:
#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 
Аватара пользователя
Неужели ни кто не писал Гауссов шум на СИ ?

 
 
 
 Re: [C] Подскажите с Гауссовским аддитивным шумом.
Сообщение08.04.2012, 19:24 
Аватара пользователя
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 
Аватара пользователя
Pavia в сообщении #558071 писал(а):
Unmanner
Просто вопрос у вас выглядит как-то глупо.
Код:
a[i] +=2*(rand() / RAND_MAX)-1;


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

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

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

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

 
 
 
 Re: [C] Подскажите с Гауссовским аддитивным шумом.
Сообщение08.04.2012, 22:01 
Аватара пользователя
Pavia в сообщении #558117 писал(а):
StdDev это сигма или стандартное отклонение. Им и регулируешь.



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

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

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

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

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

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

 
 
 [ Сообщений: 10 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group