Вам придется работать с воображаемыми числами, но я не понимаю, почему это проблема.Вы все еще можете искать пики, используя представление величины (abs
), но когда вы «сбиваете их с толку», вы устанавливаете другое сложное значение.Вам решать, как вы хотите определить, каким должно быть это значение - вы можете установить его на ноль, интерполировать локальные частоты, вставить случайное число ...
Редактировать re: ваш комментарий:
Не позволяйте воображаемым числам сбить вас с толку.Во всяком случае, они на самом деле не "воображаемые"!Просто для того, чтобы представить синусоидальную волну на данной частоте, вам нужны два значения: величина и фаза.Величина - это то, на что вы привыкли смотреть, и она определяет сколько данной частоты мы имеем.Фаза определяет сдвиг относительно некоторой точки (например, t = 0), что также очень важно.В качестве примера возьмем БПФ для сигналов (скажем, синусоидальной и косинусной волны) с одинаковой частотой - величины будут выглядеть одинаково, но фаза будет другой!Если бы у нас не было фазы, IFFT не знал бы, дать ли нам синусоидальную или косинусоидальную волну, или что-то среднее между ними.
Конечно, величина и фаза - это не то же самое, что реальная имнимый, но есть простая формула для их преобразования.В любом случае мы используем два числа для представления каждой частоты.