У мене є алгоритм, що нуль прошиває послідовність до 4N, робить FFT і використовує лише N найнижчих частот N точок із створених 4N.
Це здається великою кількістю марної роботи, будь-які ідеї, як це можна зробити швидше?
У мене є алгоритм, що нуль прошиває послідовність до 4N, робить FFT і використовує лише N найнижчих частот N точок із створених 4N.
Це здається великою кількістю марної роботи, будь-які ідеї, як це можна зробити швидше?
Відповіді:
Якщо у вас є лише кілька бункерів, то наступне може бути для вас дуже ефективним:
1. Просто робіть DFT на кожній необхідній вам частоті.
2. Використовуйте алгоритм Ґерцеля для кожної розглянутої частоти.
Нульова прокладка до 4X довжини, обчислення більш тривалого FFT, а потім використання лише нижньої 1/4 бункера дає майже однакові результати віконної інтерполяції Sinc вихідної довжини FFT.
Тому просто використовуйте оригінальну довжину FFT та інтерполюйте за допомогою 3-фазного ядра інтерполяції Sinc з відповідною шириною вікна.
Нульова підкладка у часовій області дає вам рішення високої частоти, але не надає нової інформації, тому вона забезпечує по суті інтерполяцію в частотній області. Залежно від характеру ваших сигналів та необхідної точності, ви зможете отримати додаткові точки частоти за допомогою регулярного FFT з N точок та зробити відповідну інтерполяцію (лінійна, сплайн, pchip, sinc тощо).