Здравствуйте. Вот уже несколько дней ломаю голову над поставленной задачей. В общем: есть значения случайной величины - сэмплы из wav файла.
Надо подсчитывать кол-во значений случайной величины, которые попадают в j-ый интервал (N[j]).
Nj - абсолютная частота для j-го интервала;
j - номер интервала, j меняется от 1 до m;
m - кол-во интервалов;
Считается
m так:
Код:
m:=trunc(3.3*log10(NumSamples)+1);
delX - длина интервала m (кол
NumSamples, которые попали в
m)
Считается
delX так:
То есть это все семплы разбились на интервалы, например NumSamples=
1079, а m=11, delX=98. Получается 98*11 =
1078.
NumSamples - кол-во значений случайной величины;
С этим все ясно.
Вернемся к задаче.. (выделена красным)
Для этого надо создать цикл по i , которое изменять от 1 до
NumSamples. В цикле проверять, в какой интервал попало i -е значение и при этом изменять соответствующий счетчик - абсолютную частоту.
Вот такой у меня цикл для всех операций с сэмплами:
Код:
for I := 1 to NumSamples do
begin
for J := 1 to WavInfo.WaveFormat.nChannels do // так как бывает 2 канала.
begin
////////////////////////Здесь все происходит
end;
end;
Вот формула: (обведена красным)

Но пока Yj отложим на потом.
И на этом я застрял. Не знаю как это все осмыслить и как должно считаться. Как найти
Nj??? Еще добавлю, что
Nj по количеству должно быть столько же, сколько и
m. Пока все. Надеюсь на вашу помощь. Заранее благодарен! Для меня это очень важно..