у когоннить есть вид автокореляционной функции случайного сигнала

Arthur8

или процесса?
народ тут утверждает, что это будет дельта-функция, а я помню, что это будет нечто похожее на sin(x)/x
Эта картинка вроде бы была в Л.М.Сороко, Основы голографии и когерентной оптики. но нигде ни djvu ни pdf найти не могу
или хотябы ссылку на книгу, где есть такой график.

demiurg

конечно, зависит от процесса.
Если дельта-функция - то это называется "белый шум"

k11122nu

на днях какую-то попсовую книгу по фракталам прочитал, там мужик утверждал, что во многих жизненных процессах как раз синк получается.

Arthur8

ладно, придется ту книжку копать завтра в библиотеке.

demiurg

Кстати, подозреваю, что синк - это в фурье-пространстве :)

stm7543347

Пароль к интернету не нужен?

Arthur8

Пусть сигнал: f(t АКФ: a(tau тогда:
a(tau) = < f(t) f(t+tau) >
угловые скобки означают усреднение. Вообще-то усредняют по ансамблю, но для практических целей можно считать, то усреднение идет по t. Иначе бы писали a(t,tau). Есть теорема, что для стационарных сигналов (а тут, насколько понимаю, 99% подразумевается именно такой сигнал a(t,tau)=a(tau) и не зависит от t.
Пусть для пример рассматриваемый случай - периодическая функция, пусть это будет синус, с частотой f и периодом T=1/f. Тогда первый ноль АКФ будет tau_0 = T/4=1/4f. т.е. насколько понимаю, если распределение имеет синусоидальный характер (например то его периодичность t/4. Если построить график - то первое пересечение АКФ будет давать периодичность повторения, если таковая вообще имеется .
Как считать:
ksi = исходная функция (набор случайных чисел)
G = её АКФ
u = моя функция
a = АКФ для u
int = интеграл от 0 до +inf.
delta (x-y) = дельта-функция
u (t) = int ksi(t-x) exp(-x) dx
a(tau) = < u(t) u(t+tau) > = < int int ksi(t-x) ksi (t+tau-y) exp(-x) exp(-y) dx dy > =
= int int < ksi(t-x) ksi (t+tau-y) > exp(-x) exp(-y) dx dy =
= int int G (x-y+tau) exp(-x) exp(-y) dx dy =
= int int delta (x-y+tau) exp(-x) exp(-y) dx dy.
Если tau >=0, то по свофйсту delta-функции
a(tau) = int [int delta (y-x-tau) exp(-y) dy] exp(-x) dx =
= int [exp(-y) при y:=x+tau] exp(-x) dx =
= int exp(-x-tau) exp(-x) dx =
= exp (-tau) int exp(-2x) dx = exp(-tau)/2 > 0
АКФ я вычислял так:
a(tau) = summ i=0 to N-tau { f*f[i+tau] } / (N-tau)
N - число отсчетов.
код, который строит, вроде бы как правильно автокореляционную функцию случайного процесса (т.н. белый шум, т.е. набор случайных чисел, можно подать строб, пилу, гаусс и т.п. - ошибки будут только из за некоторой дискретизации):

#include <stdio.h>

const int N = 5000;

int main {
int i;
double data[N];
double volt = 0;
for (i=0; i<N; i++) {
data[i] = rand;//sin double) i/100);
}
int tau;
for (tau=4000; tau<4999; tau++){
double sum=0;
for (i=0; i<N-tau; i++) sum+= data[i]*data[i+tau]; // считаем АКФ
sum /= (N-tau);
printf ("%d\t%g\n", tau, sum/100000000000000000);
}
return 0;
}

сохраняем с файл с названием akf.c, далее идут команды:
$ gcc -O4 akf.c -o akf -lm
$ ./akf >file.dat
потом в другой консоли при помощи например gnuplot строим график АКФ:
$ gnuplot
G N U P L O T
Version 3.7 patchlevel 3
last modified Thu Dec 12 13:00:00 GMT 2002
System: Linux 2.4.20-20.9observ
Copyright(C) 1986 - 1993, 1998 - 2002
Thomas Williams, Colin Kelley and many others
Type `help` to access the on-line reference manual
The gnuplot FAQ is available from
http://www.gnuplot.info/gnuplot-faq.html
Send comments and requests for help to <info-dartmouth.edu>
Send bugs, suggestions and mods to <bug-dartmouth.edu>
Terminal type set to 'x11'
gnuplot> plot "file.dat"
gnuplot>
Вобщем, если в точности повтрить приведенные команды, скомпилировать программу, то получится некий график, который имеет вид точно не дельта-функции:


Вот вам формула, по формуле расчет, написана программа - чего я делаю не так, т.к. дельта-функция там никак не проявляется. Хотя все дело тут может быть в том, что дискретизация все портит.
Оставить комментарий
Имя или ник:
Комментарий: