27.09.2012, 17:46
|
Активный
|
|
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
|
|
А можно так попробовать? Теоретический это правильно?
Код:
Z: array [0..10000,0..10000] of Int64;
Sample := 0;
S:=0;
Sl:=tStringlist.Create;
for I := 1 to NumSamples do
begin
for J := 1 to WavInfo.WaveFormat.nChannels do
begin
fs.ReadBuffer(Sample, BytsPerSample);
case BytsPerSample of
1: Sample := ShortInt(Sample);
2: Sample := SmallInt(Sample);
end;
WavInfo.Samples[J - 1, I - 1] := Sample;
if Abs(Sample) > WavInfo.MaxAmplitude then WavInfo.MaxAmplitude := Abs(Sample);
sl.Add(IntToStr(Sample));
z[j,i]:=Sample;
end;
end;
WavInfo.NumSamples := LongInt(NumSamples);
end;
sl.SaveToFile('Samples.txt');
SL.Free;
for I := 1 to NumSamples do
begin
s:=(s+z[j,i]);
end;
Xch:=S/NumSamples;
S2:=0;
for I := 1 to NumSamples do
begin
S2:=s2+Sqr(z[j,i]-Xch);
end;
M1:=Sqrt((s2/NumSamples)*(s2/NumSamples)*(s2/NumSamples));
//
S2:=0;
for I := 1 to NumSamples do
begin
S2:=s2+(z[j,i]-Xch)*(z[j,i]-Xch)*(z[j,i]-Xch);
end;
M2:=(s2/NumSamples);
//
S2:=0;
for I := 1 to NumSamples do
begin
S2:=s2+sqr(z[j,i]-Xch);
end;
M3:=Sqr(s2/NumSamples);
//
S2:=0;
for I := 1 to NumSamples do
begin
S2:=s2+sqr(Sqr(z[j,i]-Xch));
end;
M4:=(s2/NumSamples);
A:=M2/m1;
E:=m4/m3;
|