Формирование массива происходит след. образом:
for (int i = 0;i<65536;i++)
{
In[i] = 2+sin(120*2*M_PI*i/N)+5*sin(2*M_PI*i/N);
}
Filter(In, Out, 0, 100, 65536/2);
В функции Filter параметры: In - вх. сигнал, Out - выход, след. два параметра - частоты среза фильтра (в данном случае имеем ФНЧ, "отрезающий" все, выше 100 герц).
Как я понимаю, я должен на выходе получить сигнал в виде суммы 2+5*sin(2*M_PI*i/N).
Выход фильтра показан на рисунке.
Т.е фильтрация есть, но она не нормирована.
Сейчас нормирую в двух местах:
1) при обратном БПФ делю все отсчеты на N;
2) делю каждый отсчет импульсной характеристики фильтра после наложения окна на сумму модулей её составляющих (там получаются действительные числа, мнимая часть порядка 10^-4 - 10^-5 - погрешность).
Почему думаю на нормализацию: множитель получается не константным, в частности выше он где-то около 5, а для массива, сформированного
for (int i = 0;i<65536;i++)
{
In[i] = 2+sin(120*2*M_PI*i/N)+5*sin(20*2*M_PI*i/N);
}
Filter(In, Out, 10, 100, 65536/2);
он около 10