Если брать ДПФ, то всё просто - меняю частоту опорной синусоиды с необходимым шагом и перемножаю на сигнал. Работает медленно. Чисто гипотетический пример: для низких частот шаг 1Гц, средних - 50Гц, для высоких - 100Гц.
Можно немного ускорить и взять БПФ с разрешением 1Гц вместо ДПФ, а лишние данные выкинуть. Но для высоких частот выкидывать по 99 бинов как-то расточительно. Да и тоже не особо быстро работает, точек-то много.
По сути я в поисках подобного подхода:
Есть исходные данные, пусть это 16384 отсчётов. Далее идёт нечто вроде БПФ, но для низких частот оно использует все 16384, потом где-то доходит до 8192, 4096 на средних и только для высоких, к примеру только 512,64. Соответственно в НЧ диапазоне алгоритм пыхтит, так как перемножений много, а на высоких - летает.
В принципе я представляю себе следующую картину: пусть мы преобразование фурье в 16384 отсчёта представим в виде схемы с перемножением бабочек. Затем на спектре выделим ненужные бины и по ходу перемножения бабочек в обратную сторону занулим "деревья" перемножений, которые не будут видны в финальном спектре.
Может кто что знает, как такое называется?
|