У меня есть функция, которая преобразует результат из БПФ в октавную полосу (или 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 - октава)?