Цитата:
Сообщение от Dmitry_DM
Хм.. Да, вы правы. так будет для всех случаев. А что на счет формул?
|
Вроде правильно вычисляется. Только немного сбивает с толку странное переименование переменных (т.е. то что m3 это m2, m2(3/2) это m1, m2(в квадрате) это m3, ...).
И ещё я это всё сократил бы примерно так:
Код:
var
Sample, s: LongInt;
NumSamples, I, J, N: LongWord;
Xch, S1, S2, M1, M2, M3, M4, A, E: Extended;
....
begin
....
N := NumSamples * WavInfo.WaveFormat.nChannels; // Общее количество сэмплов
Xch := 0;
for I := 1 to NumSamples do
begin
for J := 1 to WavInfo.WaveFormat.nChannels do
begin
Xch := Xch + WavInfo.Samples[J - 1, I - 1];
end;
end;
Xch := Xch / N; // Среднее арифметическое всех сэмплов
M2 := 0;
M3 := 0;
M4 := 0;
for I := 1 to NumSamples do
begin
for J := 1 to WavInfo.WaveFormat.nChannels do
begin
S1 := WavInfo.Samples[J - 1, I - 1] - Xch; // Отклонение от среднеарифметического
S2 := Sqr(S1); // Квадрат отклонения от среднеарифметического
M2 := M2 + S2; // Сумма квадратов
M3 := M3 + S1 * S2; // Сумма кубов
M4 := M4 + Sqr(S2); // Сумма 4 степени
end;
end;
M2 := M2 / N;
M3 := M3 / N;
M4 := M4 / N;
E := M4 / Sqr(M2);
A := M3 / Sqrt(M2 * M2 * M2);
....
end;
Здесь переменные M2, M3, M4 получили своё оригинальное значение (т.е. как в формулах) и отсутствует кусок кода выводящий сэмплы в файл, так как он не имеет отношения к вычислениям формул.