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.