FFT для конкретного діапазону частот.


11

Я хотів би перетворити сигнал на частотну область. Бажаний діапазон частот , 0.1 Hzщоб 1 Hzі дозвіл по частоті 0.01 Hz.

З частотою дискретизації 30 HzFFT дає частотні компоненти до 15 Гц. Підвищення частоти дискретизації дає кращу роздільну здатність частоти. Однак FFT дає більш широкий діапазон частот. У моєму випадку я просто хочу, 0.1 Hzщоб 1 HzFFT поступався 15 Hz(додаткові обчислення).

Моє запитання: чи існує в будь-якому випадку стандартний спосіб я обчислити частотну область сигналу з певним діапазоном частот і високою роздільною здатністю?


2
звуки , як ви хочете , щоб Збільшити FFT arc.id.au/ZoomFFT.html
— ендоліти

Якщо ви просто зробите стандартний DFT зі швидкістю дискретизації 2 Гц та тривалістю 100 с, ви отримаєте смугу частот від 0 до 1 Гц з роздільною здатністю 0,01 Гц. Тільки 10% ваших зразків опиняться за межами діапазону, який вас цікавить. Чи справді варто докласти зусиль, щоб опрацювати деталі алгоритму "не настільки стандартного", щоб підвищити ефективність цього порівняно невеликого розрахунку?
— The Photon

Обмеження полягає в тому, що тривалість повинна бути якомога коротшою. 100-ті занадто довгі. Нам потрібно близько 10+ с
— NcJie

Відповіді:


5

Я думаю, що найкращим рішенням вашої проблеми є використання chirp-DFT. Це як лупа для певного діапазону частот. Це ефективніше, ніж пряма реалізація DFT (без FFT), тому що алгоритм FFT може бути використаний з певною до- і післяобробкою. По суті, вам потрібно модулювати сигнал за допомогою сигналу щебетання, потім фільтрувати за допомогою FFT, а потім ще раз модулювати сигнал, щоб отримати бажану частотну характеристику. Детальніше про те, як реалізувати chirp-DFT, дивіться тут і тут .


2

Існує також можливість використання частотного викривлення (також працюйте лупою, оскільки ви отримуєте поліпшену роздільну здатність у вашому діапазоні частот, що цікавлять FFT одного розміру за рахунок зниження роздільної здатності на більш високих частотах). Однак ви не економите жодних MIPS, оскільки розмір FFT не зменшується, а частотне викривлення далеко не дешеве.

Якщо ви хочете лише обчислити певні бункери в FFT (і тим самим зберегти MIPS), є кілька методів для цього. Наприклад, розсувний DFT. Посилання в цій роботі дають дуже приємне пояснення http://www.comm.utoronto.ca/~dimitris/ece431/slidingdft.pdf . Я також думаю, що альго-гурцель робить щось подібне, але я цього не знаю.

Тоді є можливість пониження тиску перед FFT'ing. Це, ймовірно, також врятує деякі MIPS.

Редагувати: Просто для уточнення коментаря щодо алгоритму Ґерцеля не корисно. Шляхом прямого підключення значень до виразу, знайденого внизу цієї сторінки вікі http://en.wikipedia.org/wiki/Goertzel_algorithm, підхід Ґерцеля буде складнішим, ніж FFT, коли розмір необхідного FFT перевищує 128 (припустимо, що розмір FFT - коефіцієнт 2 та реалізація radix-2).

Однак є й інші фактори, які слід враховувати, що йде на користь Ґерцеля. Просто навести вікі-сторінку: "Впровадження та обробка платформ FFT мають суттєвий вплив на відносну продуктивність. Деякі реалізації FFT [9] виконують внутрішні обчислення складних чисел для генерації коефіцієнтів на ходу, значно збільшуючи їх" вартість K за "Алгоритми FFT і DFT можуть використовувати таблиці попередньо обчислених значень коефіцієнта для кращої чисельної ефективності, але для цього потрібно більше доступу до значень коефіцієнтів, забудованих у зовнішній пам'яті, що може призвести до посилення суперечки кешу, що протидіє деякій чисельній перевазі . "

"Обидва алгоритми отримують приблизно коефіцієнт ефективності 2 при використанні вхідних даних реально оцінених, а не комплексних. Однак, ці алгоритми є природними для алгоритму Ґерцеля, але не будуть досягнуті для FFT без використання певних варіантів алгоритму, спеціалізованих для перетворення реальної -цінні дані. "


1
Ковзаюча DFT фактично корисна в контексті спектрального аналізу в реальному часі, де послідовність введення дуже довга і спектр потрібно перераховувати через рівні проміжки часу. Алгоритм Гьерцеля є дуже ефективним, якщо потрібно обчислити лише кілька значень DFT. Це не було б корисно для вирішення даної проблеми, оскільки бажана кількість точок частоти занадто велика.
— Метт Л.

Дякую @MattL. для вказівки на слабкість алгоритму Ґерцеля.
— NcJie

1

Δf=fсN
fсNN

Nс(т)fcfбх(н)с(т)х(н)=с(н/fс)

х~(н)=х(н)е-j2πк0/N
к0=fc/fсfбfб+fcf~сfбх~(н)М=fс/fбN

с(т)М

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.