Показать сообщение отдельно
  #7  
Старый 21.12.2012, 19:46
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию

poli-smen, теперь я все понял как должно быть. Но не знаю как это посчитать, как раз с этим прошу помощи.
Короче так: опишу на примере, так понятнее. Есть 1079 сэмплов, они разбиты на 11 интервалов m. Каждый из 1079 сэмплов имеет свою амплитуду, например
Код:
-0,00266193433895297
0,00443655723158829
-0,00798580301685892
0,0164152617568767
-0,163265306122449
-0,131322094055013
0,91659272404614
Так вот Nj - это сума амплитуд, именно для каждого интервала. Допустим:
Код:
N[1] = столько-то
N[2] = столько-то
N[3] = столько-то
...
N[m] = столько-то 
Наконец-то я пришел к разгадке. Теперь помогите оформить цикл, пожалуйста!
Вот сам кусок кода, отвечающий за подсчеты.
Код:
      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 Sample > WavInfo.MaxAmplitude then WavInfo.MaxAmplitude := Sample;
      if Sample < WavInfo.MinAmplitude then WavInfo.MinAmplitude := Sample;

        end;             ////////
      end;
    WavInfo.NumSamples := LongInt(NumSamples);

  for I := 1 to NumSamples do
    for J := 1 to WavInfo.WaveFormat.nChannels do
      begin
      Samp1[j,i]:=WavInfo.Samples[J - 1, I - 1];
      Samp2[j,i]:=WavInfo.Samples[J - 1, I - 1] / wavInfo.MaxAmplitude  ;
      if form1.chk1.Checked = False then
          begin
            Form1.Series1.Add(samp1[J , I ]) ;
            sl.Add(FloatToStr(samp1[J , I ]));
          end else
          begin
            Form1.Series1.Add(samp2[J , I ]) ;
            sl.Add(FloatToStr(samp2[J , I ]));
          end

      end;

   for I := 1 to NumSamples do
      begin
        for J := 1 to WavInfo.WaveFormat.nChannels do
       begin
         if form1.chk1.Checked = False then
          s:=(s+Samp1[j,i])
         else
          s:=(s+Samp2[j,i]);
       end;
      end;
      Xch := S / (NumSamples * WavInfo.WaveFormat.nChannels);
//
    S2:=0;
      for I := 1 to NumSamples do
    begin
        for J := 1 to WavInfo.WaveFormat.nChannels do
      begin
        if form1.chk1.Checked = False then
          S2:=s2+Sqr(Samp1[j,i]-Xch)
         else
          S2:=s2+Sqr(Samp2[j,i]-Xch);
      end;
     end;
     M1:=Sqrt( Sqr(s2/NumSamples)*(s2/NumSamples) );
//

    S2:=0;
      for I := 1 to NumSamples do
    begin
        for J := 1 to WavInfo.WaveFormat.nChannels do
      begin
        if form1.chk1.Checked = False then
          S2:=s2+sqr(Samp1[j,i]-Xch)*(Samp1[j,i]-Xch)
        else
          S2:=s2+sqr(Samp2[j,i]-Xch)*(Samp2[j,i]-Xch);
      end;
    end;
     M2:=(s2/NumSamples);
//
    S2:=0;
      for I := 1 to NumSamples do
    begin
        for J := 1 to WavInfo.WaveFormat.nChannels do
      begin
        if form1.chk1.Checked = False then
          S2:=s2+sqr(Samp1[j,i]-Xch)
        else
          S2:=s2+sqr(Samp2[j,i]-Xch);
     end;
    end;
     M3:=Sqr(s2/NumSamples);
//
    S2:=0;
      for I := 1 to NumSamples do
    begin
        for J := 1 to WavInfo.WaveFormat.nChannels do
     begin
       if form1.chk1.Checked = False then
          S2:=s2+sqr(Sqr(Samp1[j,i]-Xch))
       else
          S2:=s2+sqr(Sqr(Samp2[j,i]-Xch));
     end;
    end;
    M4:=(s2/NumSamples);

    Asymmetry:=M2/m1;
    Excess:=m4/m3;


     for I := 1 to NumSamples do
      begin
        for J := 1 to WavInfo.WaveFormat.nChannels do
       begin
       if form1.chk1.Checked = True then
           begin
         WavInfo.MinAmplitude:=WavInfo.MinAmplitude/WavInfo.MaxAmplitude;
         WavInfo.MaxAmplitude:=1;
           end;
     end;
    end;

    ///////////////////////////////////
    m:=trunc(3.3*log10(NumSamples)+1);
    delX:=(WavInfo.MaxAmplitude - WavInfo.MinAmplitude) / m;
Скажу только, что
Samp1[j,i] - не нормированные сэмплы
Samp1[j,i] - нормированные сэмплы (поделены на макс амплитуду)
Ответить с цитированием