Как сгенерировать Im, Re октавный фильтр - PullRequest
0 голосов
/ 28 марта 2019

У меня есть функция, которая преобразует результат из БПФ в октавную полосу (или 1 / n - октаву):

Function OctaveFilter(LowFreq, HighFreq, Im, Re) 'For amplitude
  Dim i, j, SortedData(), F_From(), F_To()
  Redim SortedData(Bins * n), F_From(Bins * n), F_To(Bins * n)

  Dim p
  For i = 1 To Bins * n
    F_To(i) = Int(HighFreq(i) / df)
    F_From(i) = Int(LowFreq(i) / df)
    if (F_From(i) = 0) Then F_From(i) = 1 ' We cannot start from index 0
  Next

  For i = 1 To Bins * n
    SortedData(i) = 0
    For j = F_From(i) To F_To(i)
      If (Length >= j) Then
        SortedData(i) = SortedData(i) + Im(j)^2 + Re(j)^2
      End If
    Next
  Next

  SortInBins = sqrt(SortedData)
End Function

Например, это БПФ: Amplitude

преобразует в 1/3-октавные полосы:

1/3 - октава

Но из БПФ у меня также есть Re и Im часть. Я хочу преобразовать эти части в октавную группу тоже. Это та же функция? Как я могу преобразовать эту Im part мнимую часть в аналогичный результат (1/3 - октава)?

...